我有一個使用python多進程的程序。我發現在主程序中創建的所有進程都可以完成,但主程序始終在等待返回值,並且無法停止。有人可以給我一些關於如何解決這個問題的建議嗎?進程無法停止在python多處理池中
的代碼片段如下:
主程序:
workers = multiprocessing.Pool(4)
args = [arg1, arg2, arg3, arg4]
results = workers.map(subfunc, args)
print "we are in main functions "
subfunc(* ARG)
# doing some other jobs
result = {.....} # a large dictionary
print 'done with sub functions'
return result # if I change it to "return 1", it can finish successfully
我可以看到 「通過子功能完成」 對所有的輸出主要創建的過程,但沒有輸出「我們在主要功能」。任何人都可以幫我弄清楚這個問題嗎?
你可以測試,以符合結果有一個長度? Mayhap這種行爲是由於永遠不執行循環。 – mklauber 2012-04-06 19:57:42
它可能是結果字典有遞歸引用,並使其成爲一個泡菜沒有完成。嘗試將它寫出來作爲pickle或json的標準輸出。 – j13r 2012-04-06 21:38:39
這就是我現在所做的,它的工作原理。謝謝 – hanqiang 2012-04-18 19:14:57