2012-07-30 49 views
6

我有一個使用線程的程序。當我的程序關閉時,我的線程仍在運行,這很正常。我想知道我的線程是如何檢測到主程序終止的;僅限於本身。我會怎麼做?python:如何檢測我的線程變成孤立的時候?

我的線程處於隊列中的無限循環和過程中的許多對象。我無法將我的線程定義爲守護進程,否則我會在主程序結束時丟失一些數據。我不希望我的主程序在關閉時設置一個布爾值。

回答

4

如果你能得到一個處理主線程,你可以調用它is_alive()

或者,你可以調用threading.enumerate()讓所有目前居住線程的列表,並檢查是否在主線程就在那裏。

或者,如果連那是不可能的,那麼你也許能夠檢查是否子線程是僅存的非守護線程。

+0

感謝它解決了我的問題。如果thread.is_alive()!=真: print「MainThread is stopped」 else():thread.getName()。find(「MainThread」)!= -1: elseThread(): ' : print「MainThread is running」' – user1528760 2012-07-31 09:55:57

0

將它的工作,如果你的經理跟蹤有多少打開線程有,然後餓死輸入的時候,孩子自殺了?所以父母會開始將數據推送到隊列中,並且工作人員會從隊列中消耗數據。如果工作人員在某個超時時間內沒有在隊列中發現任何信息,則會自行終止。然後,主線程會跟蹤有多少員工正在運行,並在活動員工數量低於給定閾值時定期啓動新員工。