0
我有一個生成2類線程類的進程。一個線程負責消耗一個job_queue(這個類的100個線程通常運行)。第二個線程是一個殺死線程。我正在使用從thread2設置的result_done標誌,問題是我的threads1等待X秒,然後檢查是否設置了result_done標誌。現在從同一進程的線程中kill所有線程和進程
def run(self):
while True:
try:
val = self.job_queue.get(True,self.maxtimeout)
except:
pass
if self.result_done.isset():
return
,如果maxtimeout設置爲500秒和我設置result_done標誌從另一個線程,該線程將等待500秒退出之前(如果在隊列中沒有數據)。
我想要實現的是,所有線程都隨着當前進程優雅地死掉,只要從進程的任何線程設置了result_done事件,就會正確終止db,websocket,http連接等。
我正在使用python多進程庫來創建產生這些線程的進程。
更新:所有線程都是守護進程=真正的線程。
如果您希望線程平穩地死去,您需要使它們成爲非守護線程。 – gravetii