如何停止线程python

时间:2013-04-26 14:01:04

标签: python multithreading

大家好,

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

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

if __name__=='__main__':
    run()

1 个答案:

答案 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())的循环中执行此操作非常重要,因为信号仅由主线程捕获,因此如果主线程被阻塞,它将永远不会结束。

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