Pemprosesan Berbilang.Kolam: Kaedah Mana Yang Perlu Saya Gunakan?
Pemprosesan berbilang membenarkan Python melaksanakan fungsi secara serentak merentas berbilang proses. Walau bagaimanapun, memilih kaedah yang sesuai boleh mengelirukan, terutamanya apabila mempertimbangkan Pool.apply, Pool.apply_async dan Pool.map. Mari kita jelaskan perbezaan dan kes penggunaan mereka:
Pool.apply vs. Pool.apply_async vs. Pool.map
1. Pool.apply:
2. Pool.apply_async:
3. Pool.map:
Memilih Kaedah yang Betul
Gunakan Pool.mohon jika:
Gunakan Pool.apply_async jika:
Gunakan Pool.map jika:
Contoh: Panggilan Balik Asynchronous dalam Pool.apply_async
<code class="python">import multiprocessing as mp import time def foo_pool(x): time.sleep(2) return x*x result_list = [] def log_result(result): result_list.append(result) def apply_async_with_callback(): pool = mp.Pool() for i in range(10): pool.apply_async(foo_pool, args = (i, ), callback = log_result) pool.close() pool.join() print(result_list) if __name__ == '__main__': apply_async_with_callback()</code>
Output:
[1, 0, 4, 9, 25, 16, 49, 36, 81, 64]
Perhatikan bahawa susunan keputusan mungkin tidak sejajar dengan susunan panggilan fungsi, tidak seperti Pool.map.
Atas ialah kandungan terperinci Kaedah Kolam Mana Yang Harus Saya Gunakan dalam Pemprosesan Berbilang Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!