我想了解Python的multiprocessing.Pool對象的最佳做法。我應該每次創建一個新的Pool對象還是重用一個對象?
在我的程序中,我經常使用Pool.imap。通常,每次我並行開始任務時,都會創建一個新的池對象,然後在完成後關閉它。
我最近遇到一個掛起,其中提交給池的任務數量少於進程數量。奇怪的是,它只發生在我的測試管道中,其中有一些東西在它之前運行。將測試作爲獨立運行並不會導致問題。我認爲這與製作多個游泳池有關。
我真的很想找一些資源來幫助我理解使用Python多處理的最佳實踐。具體而言,我目前正試圖瞭解製作多個池對象與僅使用其中一個的含義。
你是說你創建一個工作線程池,然後關閉並加入。之後你創建另一個工作線程池,關閉並加入,但它永遠不會結束?你可以在一個簡短的Python腳本中重現嗎?您只能通過https://docs.python.org/2/library/multiprocessing.html#multiprocessing-programming和https://docs.python.org/2/library/multiprocessing中的指導原則在其線程中訪問池本身。 html#使用a-pool-of-workers –
我有類似的問題。我在一個循環內部運行一個循環,其中內部循環與Pool.imap並行。它可以工作很多次,具體取決於我提供功能的數據。但大多數情況下,它最終會掛起而沒有錯誤信息。我一直在試圖調試它,但一直未能找出原因。 –