Menyelaraskan Gelung Python Mudah: Meneroka Pilihan Berbilang Pemprosesan
Dalam bidang pengkomputeran berprestasi tinggi, selari ialah teknik berkesan yang digunakan untuk mempercepatkan pelaksanaan tugasan intensif pengiraan. Soalan ini meneroka pelaksanaan praktikal menyelaraskan gelung Python mudah menggunakan dua pendekatan berbilang pemprosesan yang popular: modul berbilang pemprosesan dan concurrent.futures.ProcessPoolExecutor.
Kunci Jurubahasa Global CPython: Kaveat
Sebelum mendalami kaedah khusus, adalah penting untuk menangani masalah tersebut Kunci Jurubahasa Global (GIL) pelaksanaan CPython. GIL pada dasarnya melarang pelaksanaan serentak kod Python oleh benang yang berbeza dalam penterjemah yang sama. Had ini bermakna bahawa utas adalah berfaedah terutamanya untuk tugas terikat I/O tetapi bukan beban kerja terikat CPU. Memandangkan nama fungsi calc_stuff() mencadangkan operasi terikat CPU, menggunakan berbilang proses adalah disyorkan.
Berbilang pemprosesan dengan Modul berbilang pemprosesan
Modul berbilang pemprosesan menyediakan mekanisme yang mudah untuk mencipta kumpulan proses. Kod di bawah menunjukkan penggunaannya:
pool = multiprocessing.Pool(4) out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
Pemprosesan berbilang dengan concurrent.futures.ProcessPoolExecutor
Sebagai alternatif, concurrent.futures.ProcessPoolExecutor juga boleh digunakan untuk proses parall . Kaedah ini bergantung pada modul berbilang pemprosesan yang sama, memastikan kefungsian yang sama:
with concurrent.futures.ProcessPoolExecutor() as pool: out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))
Kedua-dua kaedah berbilang pemprosesan menawarkan pendekatan yang mudah untuk menyelaraskan beban kerja terikat CPU, menjadikannya alat yang berharga untuk meningkatkan kecekapan kod Python.
Atas ialah kandungan terperinci Bagaimanakah `multiprocessing` dan `concurrent.futures` Python Boleh Mejajarkan Gelung Mudah untuk Peningkatan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!