大家好,
我试图在程序停止时停止这个线程(比如当我按 ctrl+C 时)但没有运气。我试过 putt1.daemon=True
但是当我这样做时,我的程序在我启动后就结束了。请帮我阻止它。
def run():
t1 = threading.Thread(target=aStream).start()
if __name__=='__main__':
run()
大家好,
我试图在程序停止时停止这个线程(比如当我按 ctrl+C 时)但没有运气。我试过 putt1.daemon=True
但是当我这样做时,我的程序在我启动后就结束了。请帮我阻止它。
def run():
t1 = threading.Thread(target=aStream).start()
if __name__=='__main__':
run()
做你想做的事情的一种常见方法是加入线程一段时间,如下所示:
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"
在 timeout (不是 permament join()
)的循环中执行此操作很重要,因为信号仅由主线程捕获,因此如果主线程被阻塞,则永远不会结束。
另一种方法是设置一些事件让非守护线程知道何时完成,这对我来说看起来更头疼。