2010-07-21 70 views
3

我使用多處理創建並行程序時出現問題。 AFAIK當我開始一個新的進程使用這個模塊(多處理)我應該做「os.wait()」或「childProcess.join()」以獲得其'退出狀態。但是,如果在子進程中發生了什麼(並且子進程將掛起),那麼將上面的函數放在我的程序中可能會停止主進程。使用python的多處理和進程並行編程defunc

的問題是,如果我不這樣做,我會得到子進程去殭屍(和將被列爲像在頂級上市「蟒蛇<解散>」)。

有什麼辦法可以避免等待子進程結束並避免創建殭屍進程和\或不打擾主進程那麼多關於它的子進程?

回答

0

您可能需要提供更多信息或實際代碼才能確定。你是否通過了documentation,特別是標有「警告」的部分?例如,你可能會面臨這樣的事:

警告:正如上面提到的,如果一個子進程已經把項目一個隊列(它沒有使用JoinableQueue.cancel_join_thread()),那麼進程不會終止,直到所有緩衝項目已被刷新到管道。

這意味着如果您嘗試加入該進程,則可能會發生死鎖,除非您確定已放入隊列的所有項目都已被使用。同樣,如果子進程是非守護進程,那麼父進程在嘗試加入所有非守護進程子進程時可能會在退出時掛起。

請注意,使用管理器創建的隊列不存在此問題。請參閱編程準則。