3

大家好,

我试图在程序停止时停止这个线程(比如当我按 ctrl+C 时)但没有运气。我试过 putt1.daemon=True但是当我这样做时,我的程序在我启动后就结束了。请帮我阻止它。

def run():
    t1 = threading.Thread(target=aStream).start()

if __name__=='__main__':
    run()
4

1 回答 1

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"

在 timeout (不是 permament join())的循环中执行此操作很重要,因为信号仅由主线程捕获,因此如果主线程被阻塞,则永远不会结束。

另一种方法是设置一些事件让非守护线程知道何时完成,这对我来说看起来更头疼。

于 2013-04-26T14:09:50.543 回答