大家好,
我试图在程序停止时停止此线程(比如我按ctrl + C)但没有运气。
我尝试了t1.daemon=True
,但是当我这样做时,我的程序在我开始之后就结束了。请帮我阻止它。
def run():
t1 = threading.Thread(target=aStream).start()
if __name__=='__main__':
run()
答案 0 :(得分:6)
做一个你想要的事情的一种常见方式是加入线程一段时间,像这样:
def main():
t = threading.Thread(target=func)
t.daemon = True
t.start()
try:
while True:
t.join(1)
except KeyboardInterrupt:
print "^C is caught, exiting"
在具有超时(不是永久性join()
)的循环中执行此操作非常重要,因为信号仅由主线程捕获,因此如果主线程被阻塞,它将永远不会结束。
另一种方法是设置一些事件让非守护进程线程知道何时完成,对我来说看起来更让人头痛。