Multiprosesor adalah teknik populer dalam pemrograman Python yang memungkinkan Anda menjalankan beberapa proses secara bersamaan, yang sering kali menghasilkan peningkatan kinerja dan penggunaan sumber daya sistem yang lebih efisien. Artikel ini membahas penggunaan multiproses perpustakaan dengan Python, yang secara khusus berfokus pada peta fungsi. Fungsi peta memungkinkan Anda menerapkan fungsi ke setiap item dalam iterable, seperti daftar, dan mengembalikan daftar baru beserta hasilnya. Dengan memanfaatkan multiprosesor, 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 perpustakaan multiprosesor dengan Python, khususnya Kolam kelas dan nya peta metode. Dengan menggunakan fungsi Pool.map() multiproses, 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)
- Pertama, impor multiproses modul, yang berisi alat yang diperlukan untuk memanfaatkan pemrosesan paralel dengan Python.
- 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.
- Hasilkan daftar yang disebut nomor, yang berisi bilangan bulat dari 0 hingga 9 (inklusif).
- Inisialisasi a Kolam objek dari modul multiprosesor. Objek Pool berfungsi sebagai sarana untuk mengelola proses pekerja yang akan Anda gunakan untuk memparalelkan tugas Anda.
- 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.
- Cetak daftar angka_kuadrat yang dihasilkan, yang harus berisi nilai kuadrat dari daftar angka.
Perpustakaan Multiproses Python
Python multiproses perpustakaan menyediakan sarana intuitif untuk mengimplementasikan paralelisme dalam program Anda. Ini menutupi beberapa kompleksitas yang biasanya terkait dengan pemrograman paralel dengan menawarkan abstraksi tingkat tinggi seperti Kolam. Kelas Pool menyederhanakan distribusi pekerjaan di beberapa proses, memungkinkan pengguna merasakan manfaat pemrosesan paralel dengan kerumitan minimal.
Modul Python Itertools dan Fungsi Terkait
Meskipun multiprosesing adalah solusi terbaik 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 peningkatan efisiensi. Beberapa itertools berfungsi seperti gambar() dan imap_unordered() dapat memparalelkan proses penerapan fungsi ke iterable. Namun, penting untuk dicatat bahwa itertools berfokus terutama pada solusi berbasis iterator, sedangkan perpustakaan multiprosesing menawarkan pendekatan paralelisme yang lebih komprehensif, menyediakan alat dan kemampuan tambahan di luar fungsi seperti peta.