我有一個Python 2.7多進程進程不會退出父進程退出。我設置了守護進程標誌,強制它在父母死亡時退出。該文檔聲明:多進程守護進程不會終止在父進程退出
「當進程退出時,它會嘗試終止其所有守護進程的子進程。」
p = Process(target=_serverLaunchHelper, args=args)
p.daemon = True
print p.daemon # prints True
p.start()
當我經由守護程序活下來和運行kill命令終止該父進程(該塊上的下一次運行的端口)。子進程正在啓動一個SimpleHttpServer,並在不做任何事情的情況下調用serve_forever
。我的猜測是,文檔中的「企圖」部分意味着阻塞服務器進程正在停止進程死亡,並導致進程因此而孤立。我可以讓孩子將服務推送到另一個線程,並讓主線程檢查父進程ID更改,但是這似乎只是複製守護進程功能的很多代碼。
有人能夠洞察守護程序標誌不按描述工作的原因嗎?這在Windows8 64位和ubuntu12 32位虛擬機上是可重複的。
一個歸結處理功能的版本低於:
def _serverLaunchHelper(port)
httpd = SocketServer.TCPServer(("", port), Handler)
httpd.serve_forever()
好的,所以如果我真的想確保孩子在父母死後退出,我需要將邏輯編程到子進程中,以監視父母的消失。感謝您的明確和快速的答案! – Pyrce 2013-04-08 20:32:57