我正在尝试每1秒执行代码块的方法。我玩过APScheduler,效果很好。根本没有任何时间漂移。我可以无限期地运行它,它不会漂移。
但我正在寻找一种方法,只用time.sleep()
。
我已经读过并发现:
while True:
start = time.time()
function()
time.sleep(1-(time.time() - start))
是一种常见的解决方案。
然而,我已经测试了一段时间,我看到了一些漂移。
此图片显示print datetime.now()
之后的start = time.time()
:
正如你所看到的,从一次迭代开始到结束需要大约1.001秒,所以在大约1000秒后给予或接受,我将会休息一整秒。
有没有人对更准确执行的更好方法有任何想法?
答案 0 :(得分:0)
除非你确切知道你的函数执行需要多长时间,否则time.sleep
对你来说是一个糟糕的选择,首先因为它将使用的代码将假设睡眠之间的函数完全没有时间,第二,因为它没有提供比一秒更大的粒度