Pemprosesan berbilang merupakan teknik popular dalam pengaturcaraan Python yang membolehkan anda menjalankan berbilang proses secara serentak, yang selalunya menghasilkan peningkatan prestasi dan penggunaan sumber sistem yang lebih cekap. Artikel ini membincangkan penggunaan pustaka pemprosesan berbilang dalam Python, khususnya dengan memberi tumpuan kepada fungsi peta . Fungsi peta membolehkan anda menggunakan fungsi pada setiap item dalam item yang boleh diulang, seperti senarai, dan mengembalikan senarai baharu dengan hasilnya. Dengan memanfaatkan pemprosesan berbilang, kita boleh menyelaraskan proses ini untuk kecekapan dan kebolehskalaan yang lebih tinggi.
Dalam artikel ini, kami akan meneroka masalah yang mana pemproses berbilang dengan fungsi peta boleh menjadi penyelesaian yang sangat baik, membincangkan perpustakaan dan fungsi yang berkaitan, memberikan penjelasan langkah demi langkah tentang kod dan menyelidiki topik berkaitan yang dibina di atas tulang belakang pelbagai pemprosesan dan fungsi peta.
Peta Berbilang Pemprosesan: Masalah dan Penyelesaian
Masalah yang kami sasarkan untuk menyelesaikan adalah untuk meningkatkan prestasi dan kecekapan menggunakan fungsi pada setiap item dalam lelaran besar, seperti senarai, tuple atau mana-mana objek lain yang menyokong lelaran. Apabila berhadapan dengan tugas sedemikian, menggunakan fungsi peta terbina dalam atau pemahaman senarai boleh menjadi agak perlahan dan tidak cekap.
Penyelesaiannya adalah dengan menggunakan pustaka berbilang pemprosesan dalam Python, khususnya, kelas Pool dan kaedah petanya . Dengan menggunakan fungsi berbilang pemprosesan Pool.map() , kita boleh mengagihkan pelaksanaan fungsi kita merentasi berbilang proses.
Penjelasan Langkah demi Langkah Kod
Mari pecahkan kod dan gambarkan cara menggunakan fungsi peta berbilang pemprosesan dengan berkesan:
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, import berbilang proses modul, yang mengandungi alat yang diperlukan untuk menggunakan pemprosesan selari dalam Python.
- Buat fungsi yang dipanggil persegi yang hanya tidur selama setengah saat dan kemudian mengembalikan kuasa dua hujah inputnya. Fungsi ini mensimulasikan pengiraan yang mengambil masa yang munasabah untuk diselesaikan.
- Hasilkan senarai yang dipanggil nombor, yang mengandungi integer dari 0 hingga 9 (termasuk).
- Memulakan a kolam objek daripada modul multiprocessing. Objek Pool berfungsi sebagai cara untuk mengurus proses pekerja yang akan anda gunakan untuk menyelaraskan tugas anda.
- Panggil peta kaedah pada objek kolam, dan lulus dalam persegi fungsi dan nombor senarai. Kaedah peta kemudiannya menggunakan fungsi segi empat sama untuk setiap item dalam senarai nombor secara serentak, menggunakan proses pekerja yang tersedia dalam kumpulan.
- Cetak senarai nombor kuasa dua yang terhasil, yang sepatutnya mengandungi nilai kuasa dua daripada senarai nombor.
Perpustakaan Berbilang Pemprosesan Python
Pustaka berbilang pemprosesan Python menyediakan cara intuitif untuk melaksanakan paralelisme dalam program anda. Ia menutupi sebahagian daripada kerumitan yang biasanya dikaitkan dengan pengaturcaraan selari dengan menawarkan abstraksi peringkat tinggi seperti Pool . Kelas Pool memudahkan pengagihan kerja merentasi berbilang proses, membolehkan pengguna mengalami manfaat pemprosesan selari dengan kerumitan yang minimum.
Modul Python Itertools dan Fungsi Berkaitan
Walaupun pemprosesan berbilang merupakan penyelesaian yang sangat baik untuk banyak tugasan selari, perlu dinyatakan bahawa Python juga menyediakan pustaka dan alatan lain yang memenuhi keperluan yang serupa. Modul itertools, sebagai contoh, menawarkan pelbagai fungsi yang beroperasi pada iterables, selalunya dengan kecekapan yang lebih baik. Sesetengah fungsi itertools seperti imap() dan imap_unordered() boleh menyelaraskan proses penggunaan fungsi kepada iterable. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa itertools memberi tumpuan terutamanya pada penyelesaian berasaskan iterator, manakala pustaka pemprosesan berbilang menawarkan pendekatan yang lebih komprehensif untuk paralelisme, menyediakan alatan dan keupayaan tambahan melangkaui fungsi seperti peta.