Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 线程。计时器最终停止工作_Python_Multithreading_Timer - Fatal编程技术网

Python 线程。计时器最终停止工作

Python 线程。计时器最终停止工作,python,multithreading,timer,Python,Multithreading,Timer,我试图每3秒钟调用一个函数,在Python3.4中一直持续,但最终计时器停止工作。有时是5分钟后,有时是5小时后,有没有其他的方法 import threading i = 0 def f(): global i print('Tick {}'.format(i)) i += 1 threading.Timer(3, f).start() threading.Timer(3, f).start() 编辑:我忘了提到程序从未退出,它只是不再调用函数,无所事事。

我试图每3秒钟调用一个函数,在Python3.4中一直持续,但最终计时器停止工作。有时是5分钟后,有时是5小时后,有没有其他的方法

import threading

i = 0
def f():
    global i
    print('Tick {}'.format(i))
    i += 1
    threading.Timer(3, f).start()

threading.Timer(3, f).start()

编辑:我忘了提到程序从未退出,它只是不再调用函数,无所事事。

发布的代码应该是一个简化的说明,还是可以运行以重现问题的实际代码?在下次调用
f
时运行计时器的方法似乎不安全。如果在运行
f
时发生异常,将永远不会安排下一次迭代。也许这就是你的情况?代码是一个简化的情况,但也有同样的问题。如果某个地方有异常,我应该不看到打印出来的异常吗?哎呀,我似乎遗漏了问题的一个主要部分,程序永远不会退出,它只是不会继续调用函数。代码是否有任何可能的路径可以避免再次设置
计时器?可能值得将整个函数粘贴在
try
/
finally
块中,并将
threading.Timer(3,f).start()
调用放入
finally
块中。您应该会看到异常打印出来,当然,除非有人捕捉到它。如果您可以用上面的代码示例重现这个问题,那么您可能需要向Python开发人员报告。六个小时后,我看到了同样的问题。你找到解决办法了吗?