首頁 >後端開發 >Python教學 >如何使用多處理和並行映射並行化 Python 函數?

如何使用多處理和並行映射並行化 Python 函數?

Barbara Streisand
Barbara Streisand原創
2024-10-22 20:35:09786瀏覽

How to Parallelize Python Functions Using Multiprocessing and Parallel Maps?

Python 中的平行程式設計

在 Python 中,並行程式設計允許程式的某些部分同時執行,從而可能提高效能。為了在 Python 中實現並行性,多處理模組是一個流行的選擇。

範例:

考慮涉及兩個獨立函數solve1和solve2的程式碼結構。要並行化這些函數:

<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>

此程式碼建立一個處理池,該處理池產生程序來處理solve1和solve2的非同步執行。每個行程利用不同的 CPU 核心來同時執行。

替代並行化選項:

並行化程式碼部分的另一個選項是使用並行映射。在這種情況下,您將有一個參數列表,並對每個參數並行應用一個函數:

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

注意事項:

雖然線程也可以Python 中用於並行的全域解釋器鎖定(GIL) 會阻止Python 物件的並行執行,從而使執行緒對於並行化Python 程式碼無效。

以上是如何使用多處理和並行映射並行化 Python 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn