Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencapai Paralelisme dalam Python untuk Kecekapan Dipertingkatkan?

Bagaimana untuk Mencapai Paralelisme dalam Python untuk Kecekapan Dipertingkatkan?

DDD
DDDasal
2024-10-22 20:29:24606semak imbas

How to Achieve Parallelism in Python for Enhanced Efficiency?

Pengaturcaraan Selari dalam Python

Secara tradisinya, OpenMP digunakan untuk pengaturcaraan selari dalam C . Walau bagaimanapun, Python tidak menyokong OpenMP. Ini menimbulkan persoalan: bagaimanakah kita boleh menyelaraskan bahagian tertentu kod Python untuk meningkatkan kecekapan?

Pertimbangkan struktur kod berikut:

solve1(A)
solve2(B)

Di mana solve1 dan solve2 adalah fungsi bebas. Matlamat kami adalah untuk melaksanakan fungsi ini secara serentak, mengurangkan masa berjalan keseluruhan.

Dalam Python, kami boleh memanfaatkan modul berbilang pemprosesan untuk mencapai keselarian. Untuk senario yang diberikan, kumpulan pemprosesan boleh digunakan:

<code class="python">from multiprocessing import Pool

pool = Pool()
result1 = pool.apply_async(solve1, [A])  # Evaluate "solve1(A)" asynchronously
result2 = pool.apply_async(solve2, [B])  # Evaluate "solve2(B)" asynchronously
answer1 = result1.get(timeout=10)
answer2 = result2.get(timeout=10)</code>

Pendekatan ini mencipta proses yang mengendalikan tugas tertentu secara serentak. Memandangkan tiada proses dinyatakan, kod tersebut menggunakan teras CPU yang tersedia, membenarkan setiap teras melaksanakan proses secara serentak.

Untuk memetakan senarai kepada satu fungsi, kami boleh menggunakan:

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

Ambil perhatian bahawa menggunakan benang tidak disyorkan kerana GIL (Global Interpreter Lock) mengehadkan operasi pada objek Python. Menggunakan proses memintas pengehadan ini, membolehkan keselarasan sebenar.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Paralelisme dalam Python untuk Kecekapan Dipertingkatkan?. 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