我有一个产生 2 种线程类的进程。一个线程负责消费一个job_queue(这个类的100个线程通常在运行)。第二个线程是一个杀死线程。我正在使用从thread2设置的result_done标志,问题是我的thread1等待X秒,然后检查是否设置了result_done标志。
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 多进程库来创建产生这些线程的进程。
更新:所有线程都是 daemon=True 线程。