Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelaraskan Fungsi Python Menggunakan Multiprocessing dan Peta Selari?

Bagaimana untuk menyelaraskan Fungsi Python Menggunakan Multiprocessing dan Peta Selari?

Barbara Streisand
Barbara Streisandasal
2024-10-22 20:35:09697semak imbas

How to Parallelize Python Functions Using Multiprocessing and Parallel Maps?

Pengaturcaraan Selari dalam Python

Dalam Python, pengaturcaraan selari membenarkan bahagian tertentu program untuk dilaksanakan serentak, yang berpotensi meningkatkan prestasi. Untuk mencapai keselarian dalam Python, modul pemproses berbilang adalah pilihan yang popular.

Contoh:

Pertimbangkan struktur kod yang melibatkan dua fungsi bebas, solve1 dan solve2. Untuk menyelaraskan fungsi ini:

<code class="python">from multiprocessing import Pool
pool = Pool()
result1 = pool.apply_async(solve1, [A])  # Asynchronously evaluate solve1(A)
result2 = pool.apply_async(solve2, [B])  # Asynchronously evaluate solve2(B)
answer1 = result1.get(timeout=10)
answer2 = result2.get(timeout=10)</code>

Kod ini mencipta kumpulan pemprosesan yang menghasilkan proses untuk mengendalikan pelaksanaan tak segerak solve1 dan solve2. Setiap proses memanfaatkan teras CPU yang berbeza untuk pelaksanaan serentak.

Pilihan Penyelarasan Alternatif:

Pilihan lain untuk menyelaraskan bahagian kod ialah menggunakan peta selari. Dalam kes sedemikian, anda akan mempunyai senarai hujah dan menggunakan satu fungsi pada setiap hujah secara selari:

<code class="python">args = [A, B]
results = pool.map(solve1, args)</code>

Pertimbangan:

Walaupun benang juga boleh digunakan untuk bersamaan, Kunci Jurubahasa Global (GIL) dalam Python menghalang pelaksanaan selari objek Python, menjadikan urutan tidak berkesan untuk menyelaraskan kod Python.

Atas ialah kandungan terperinci Bagaimana untuk menyelaraskan Fungsi Python Menggunakan Multiprocessing dan Peta Selari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn