Dipecahkan: peta multiprosesor

Pembaharuan Terakhir: 09/11/2023

Multiprocessing adalah teknik populer dalam pemrograman Python yang memungkinkan Anda menjalankan beberapa proses secara bersamaan, yang seringkali menghasilkan peningkatan kinerja dan penggunaan sumber daya sistem yang lebih efisien. Artikel ini membahas penggunaan pustaka multiprocessing di Python, khususnya berfokus pada fungsi map . Fungsi map memungkinkan Anda menerapkan suatu fungsi ke setiap item dalam iterable, seperti list, dan mengembalikan list baru dengan hasilnya. Dengan memanfaatkan multiprocessing, kita dapat memparalelkan proses ini untuk efisiensi dan skalabilitas yang lebih besar.

Pada artikel ini, kita akan mengeksplorasi masalah di mana multiprosesing dengan fungsi peta dapat menjadi solusi yang sangat baik, mendiskusikan pustaka dan fungsi yang relevan, memberikan penjelasan kode langkah demi langkah, dan mempelajari topik terkait yang dibangun di atas tulang punggung. multiprosesor dan fungsi peta.

Peta Multiprosesing: Masalah dan Solusinya

Masalah yang ingin kami selesaikan adalah meningkatkan performa dan efisiensi penerapan fungsi pada setiap item dalam iterable besar, seperti list, tuple, atau objek lain yang mendukung iterasi. Saat dihadapkan pada tugas seperti itu, penggunaan fungsi peta atau pemahaman daftar bawaan bisa sangat lambat dan tidak efisien.

Solusinya adalah dengan memanfaatkan pustaka multiprocessing di Python, khususnya kelas Pool dan metode map -nya . Dengan menggunakan fungsi multiprocessing Pool.map() , kita dapat mendistribusikan eksekusi fungsi kita ke beberapa proses.

Penjelasan Kode Langkah-demi-Langkah

Mari kita uraikan kodenya dan ilustrasikan cara menggunakan fungsi peta multiprosesor secara efektif:

import multiprocessing
import time

def square(n):
    time.sleep(0.5)
    return n * n

# Create the list of numbers
numbers = list(range(10))

# Initialize the multiprocessing Pool
pool = multiprocessing.Pool()

# Use the map function with multiple processes
squared_numbers = pool.map(square, numbers)

print(squared_numbers)
  1. Pertama, impor multiproses modul, yang berisi alat yang diperlukan untuk memanfaatkan pemrosesan paralel dengan Python.
  2. Buat fungsi yang disebut kotak yang hanya tidur selama setengah detik dan kemudian mengembalikan kuadrat argumen masukannya. Fungsi ini menyimulasikan perhitungan yang memerlukan waktu penyelesaian yang cukup lama.
  3. Hasilkan daftar yang disebut nomor, yang berisi bilangan bulat dari 0 hingga 9 (inklusif).
  4. Inisialisasi a Kolam objek dari modul multiprosesor. Objek Pool berfungsi sebagai sarana untuk mengelola proses pekerja yang akan Anda gunakan untuk memparalelkan tugas Anda.
  5. Sebut peta metode pada objek pool, dan meneruskannya kotak fungsi dan nomor daftar. Metode peta kemudian menerapkan fungsi persegi ke setiap item dalam daftar angka secara bersamaan, menggunakan proses pekerja yang tersedia di kumpulan.
  6. Cetak daftar angka_kuadrat yang dihasilkan, yang harus berisi nilai kuadrat dari daftar angka.

Perpustakaan Multiproses Python

Pustaka multiprocessing Python menyediakan cara intuitif untuk mengimplementasikan paralelisme dalam program Anda. Pustaka ini menyembunyikan beberapa kompleksitas yang biasanya terkait dengan pemrograman paralel dengan menawarkan abstraksi tingkat tinggi seperti Pool . Kelas Pool menyederhanakan distribusi pekerjaan di beberapa proses, memungkinkan pengguna untuk merasakan manfaat pemrosesan paralel dengan sedikit kesulitan.

Modul Python Itertools dan Fungsi Terkait

Meskipun multiprocessing merupakan solusi yang sangat baik untuk banyak tugas paralel, perlu disebutkan bahwa Python juga menyediakan pustaka dan alat lain yang memenuhi kebutuhan serupa. Modul itertools, misalnya, menawarkan banyak fungsi yang beroperasi pada iterable, seringkali dengan efisiensi yang lebih baik. Beberapa fungsi itertools seperti imap() dan imap_unordered() dapat memparalelkan proses penerapan fungsi pada iterable. Namun, penting untuk dicatat bahwa itertools terutama berfokus pada solusi berbasis iterator, sedangkan pustaka multiprocessing menawarkan pendekatan yang lebih komprehensif terhadap paralelisme, menyediakan alat dan kemampuan tambahan di luar fungsi seperti map.

Pos terkait: