2
有沒有辦法知道進程池已完成運行任務?多處理池已完成任務的非阻塞檢測
_process_pool = mp.Pool(processes=num_workers)
我加入任務到池分批:
for batch in gen_batches():
_process_pool.map_async(fn, batch)
有沒有辦法知道,當所有任務已經完成? callback
在這裏似乎不起作用。我想避免調用_process_pool.join()
與其他多處理方法相比,池非常有限。我會檢查「從多進程導入過程,管道」。您可以創建工人(Process)。當他們完成後,他們可以通過管道將消息傳遞給主線程。如果你走這條路,確保你閱讀了關於「daemon = True」的內容。這將防止孤兒。 https://docs.python.org/2/library/multiprocessing.html#pipes-and-queues和https://docs.python.org/2/library/multiprocessing.html#multiprocessing.Process.daemon – 16num
我可以也使用Value和Lock的權利?是否有使用全局值和鎖的缺點,而不是將其傳遞給處理器函數? 即使使用全局變量,它也能正常工作。我在這裏錯過了什麼嗎? – vin