Multiprocessing ialah teknik popular dalam pengaturcaraan Python yang membolehkan anda menjalankan berbilang proses secara serentak, selalunya menghasilkan peningkatan prestasi dan penggunaan sumber sistem yang lebih cekap. Artikel ini menyelami penggunaan berbilang proses perpustakaan dalam Python, khususnya memfokuskan pada peta fungsi. Fungsi peta membolehkan anda menggunakan fungsi pada setiap item dalam lelaran, seperti senarai, dan mengembalikan senarai baharu dengan hasilnya. Dengan memanfaatkan pelbagai pemprosesan, kami boleh menyelaraskan proses ini untuk kecekapan dan kebolehskalaan yang lebih besar.
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 perpustakaan berbilang pemprosesan dalam Python, khususnya, kolam kelas dan itu peta kaedah. Dengan menggunakan fungsi Pool.map() berbilang pemprosesan, kami boleh mengedarkan pelaksanaan fungsi kami merentasi pelbagai 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
Python berbilang proses perpustakaan menyediakan cara intuitif untuk melaksanakan paralelisme dalam program anda. Ia menutupi beberapa kerumitan yang biasanya dikaitkan dengan pengaturcaraan selari dengan menawarkan abstraksi peringkat tinggi seperti kolam. Kelas Pool memudahkan pengagihan kerja merentasi pelbagai proses, membolehkan pengguna mengalami faedah pemprosesan selari dengan kerumitan yang minimum.
Modul Python Itertools dan Fungsi Berkaitan
Walaupun pemproses berbilang adalah penyelesaian yang sangat baik untuk banyak tugas selari, perlu dinyatakan bahawa Python juga menyediakan perpustakaan dan alatan lain yang memenuhi keperluan yang serupa. Modul itertools, sebagai contoh, menawarkan pelbagai fungsi yang beroperasi pada iterables, selalunya dengan kecekapan yang dipertingkatkan. Beberapa itertools berfungsi seperti imap() and imap_unordered() boleh menyelaraskan proses menggunakan fungsi kepada lelaran. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa itertools memberi tumpuan terutamanya pada penyelesaian berasaskan iterator, manakala perpustakaan berbilang pemprosesan menawarkan pendekatan yang lebih komprehensif kepada keselarian, menyediakan alatan dan keupayaan tambahan melangkaui fungsi seperti peta.