Multiprocessing.Pool:我該用哪一種方法?
Multiprocessing 允許 Python 跨多個進程同時執行函數。然而,選擇合適的方法可能會令人困惑,特別是在考慮 Pool.apply、Pool.apply_async 和 Pool.map 時。讓我們澄清它們的差異和用例:
Pool.apply vs. Pool.apply_async vs. Pool.map
1. Pool.apply:
2. Pool.apply_async:
3. Pool.map:
選擇正確的方法
以下情況使用Pool.apply:
如果滿足以下條件,請使用Pool.apply_async:
使用 Pool.map 如果:
<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>您需要應用相同的同時對多個參數執行函數。 您想要保留參數結果順序。
[1, 0, 4, 9, 25, 16, 49, 36, 81, 64]範例:Pool.apply_async 中的非同步回呼輸出:請注意,結果的順序順序可能與函數呼叫的順序不一致,與Pool.map 不同。
以上是在 Python 多處理中我應該使用哪一種池方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!