python - 以精确的时间间隔循环

新手上路,请多包涵

我想以精确的时间间隔(大约 15 秒)运行一段代码 最初我使用 time.sleep(),但问题是代码需要一秒钟左右的时间才能运行,所以它会退出同步。

我写了这个,我觉得它不整洁,因为我不喜欢使用 while 循环。有没有更好的办法?

 import datetime as dt
import numpy as np

iterations = 100
tstep = dt.timedelta(seconds=5)
for i in np.arange(iterations):
    startTime = dt.datetime.now()
    myfunction(doesloadsofcoolthings)
    while dt.datetime.now() < startTime + tstep:
        1==1

原文由 AndyMoore 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 431
1 个回答

理想情况下,人们会使用线程来实现这一点。你可以做类似的事情

import threading
interval = 15

def myPeriodicFunction():
    print "This loops on a timer every %d seconds" % interval

def startTimer():
    threading.Timer(interval, startTimer).start()
    myPeriodicFunction()

那么你可以打电话

startTimer()

为了启动循环定时器。

原文由 Jon Deaton 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进