Python:定时器,如何在程序结束时停止线程?

标签 python multithreading timer

我有一个每 5 秒调用一次的函数,如下所示:

def check_buzz(super_buzz_words):
    print 'Checking buzz'
    t = Timer(5.0, check_buzz, args=(super_buzz_words,))
    t.dameon = True
    t.start()
    buzz_word = get_buzz_word()
    if buzz_word is not 'fail':
        super_buzz_words.put(buzz_word)

main()
 check_buzz()

我通过捕获键盘中断或捕获系统退出并调用以下命令来退出脚本:

sys.exit('\nShutting Down\n')

我还经常通过调用重新启动该程序:

execv(sys.executable, [sys.executable] + sys.argv)

我的问题是,如何关闭计时器线程?如果我键盘中断,计时器会继续计时。

最佳答案

我认为你刚刚拼写了 daemon 错误,它应该是:

t.daemon = True

那么 sys.exit() 应该可以工作

关于Python:定时器,如何在程序结束时停止线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29663211/

相关文章:

python - 如何将数据拟合到隐马尔可夫模型 sklearn/hmmlearn

python - 如何按位于字典深处的键对复杂字典进行排序?

python - 如何覆盖所有模板的 flask_admin 样式?

java - Java.sql 的 getRow() 线程安全吗?

C#为所有对象订阅相同的事件处理程序是否线程安全

java - 使用 Timer 显示字符串数组中的字符串

Python - 查找相同字符的序列

java - 为什么 AbstractQueuedSynchronizer 在获取锁时中断

java - 无法启动 Swing 计时器

Python 2.7,thread.Timer生成太多垃圾线程未回收