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

时间:2017-07-20 17:33:30

标签: python-3.x time

我想以确切的时间间隔(大约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

3 个答案:

答案 0 :(得分:2)

理想情况下,人们会使用线程来实现这一目标。你可以做点什么

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()

以启动循环计时器。

答案 1 :(得分:1)

考虑跟踪代码运行所需的时间(timer()函数),然后在完成后休眠15 - exec_time秒。

start = datetime.now()
do_many_important_things()
end = datetime.now()

exec_time = end - start
time.sleep(15-exec_time.total_seconds())

答案 2 :(得分:1)

您可以使用简单的bash行:

watch -n 15m python yourcode.py