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!