2010-02-18 74 views
1

有沒有辦法阻止multiprocessing Python模塊嘗試調用&等待join()父進程的子進程關閉?當進程關閉時禁用「加入」

2010-02-18 10:58:34,750 INFO calling join() for process procRx1

我想要的過程,我發出了SIGTERM對儘可能快地退出(即「快速失敗」),而不是最後纔在join嘗試放棄等待幾秒鐘。

說明:我有一個「中央過程」,它創建了一堆「子進程」。我正在尋找一種方法來清理處理來自任何進程的「SIGTERM」信號,以便降低整個進程樹。

回答

0

您是否嘗試過明確使用Process.terminate

+0

我接受了這個答案,因爲它最接近我提出的方案。 – jldupont 2010-03-17 13:41:32

0

你可以嘗試用超時(1秒?)加盟一個循環,並檢查是否線程仍然活着,是這樣的:

while True: 
    a_thread.join(1) 
    if not a_thread.isAlive(): break 

端接a_thread將觸發break條款。

+0

感謝您的時間:我沒有興趣等待'加入'來通過。 – jldupont 2010-02-19 18:35:02

0

聽起來像是你設置子標誌Process.daemon = False可能是你想要什麼:

Process.daemon

進程的守護進程的標誌,一個布爾值。這必須在start()被調用之前設置。
初始值從創建過程繼承。
當進程退出時,它會嘗試終止其所有守護進程的子進程。

請注意,不允許守護進程創建子進程。否則,守護進程會在其父進程退出時終止其子進程。另外,這些不是Unix守護進程或服務,它們是正常的進程,如果非dameonic進程退出,它將被終止(而不是加入)。

+0

感謝您的時間:我有一堆兒童流程,因此您的建議不夠充分。 – jldupont 2010-02-20 12:52:28

相關問題