Python 线程。计时器最终停止工作
我试图每3秒钟调用一个函数,在Python3.4中一直持续,但最终计时器停止工作。有时是5分钟后,有时是5小时后,有没有其他的方法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() 编辑:我忘了提到程序从未退出,它只是不再调用函数,无所事事。
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开发人员报告。六个小时后,我看到了同样的问题。你找到解决办法了吗?