Multiprocessing.Pool:了解Apply、Apply_Async 和Map
Python 中的多重處理並允許在單獨的進程中執行任務。 multiprocessing.Pool 提供了多種方法來運行具有不同配置的函數:apply、apply_async 和 map。本文透過範例闡明了這些方法之間的差異。
Apply 與 Apply_Async
與 Python 內建的 apply 類似,Pool.apply 在單獨的函數中執行函數程序並阻塞直到完成。如果您需要立即訪問結果,這非常適合。
相反,Pool.apply_async 非同步呼叫函數,傳回 AsyncResult 物件。要取得實際結果,您必須對 AsyncResult 呼叫 get(),這將阻塞直到函數完成。當您希望避免在等待結果時阻塞主進程時,此方法很有用。
Map
Pool.map 將指定的函數應用於多個參數,保留參數和結果的順序。與 apply_async 不同,map 會阻塞,直到所有結果都可用。當您需要按特定順序排列結果或想要將它們合併為單一結果時,此方法非常理想。
總表
Method | Execution | Blocking | Result Order |
---|---|---|---|
apply | In a separate process | Yes | N/A |
apply_async | Asynchronously | No | Not guaranteed |
map | In separate processes | Yes | Preserved |
使用案例
以上是您應該使用哪種 Multiprocessing.Pool 方法:Apply、Apply_Async 還是 Map?的詳細內容。更多資訊請關注PHP中文網其他相關文章!