Python 中的平行程式設計
傳統上,OpenMP 用於 C 中的平行程式設計。但是,Python 不支援 OpenMP。這就提出了一個問題:我們該如何並行化Python程式碼的特定部分來提高效率?
考慮以下程式碼結構:
solve1(A) solve2(B)
其中solve1和solve2是獨立的函數。我們的目標是同時執行這些函數,減少整體運行時間。
在Python中,我們可以利用多處理模組來實現平行性。對於給定的場景,可以使用處理池:
<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>
此方法建立同時處理特定任務的進程。由於未指定進程,因此程式碼利用可用的 CPU 核心,允許每個核心同時執行一個進程。
要將列表對應到單一函數,我們可以使用:
<code class="python">args = [A, B] results = pool.map(solve1, args)</code>
請注意,不建議使用線程,因為 GIL(全域解釋器鎖定)限制 Python 物件的操作。利用進程可以規避此限制,從而實現真正的並發。
以上是如何在Python中實現並行以提高效率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!