Python 3.x python-以精确的时间间隔循环
我想以精确的时间间隔(大约15秒)运行一段代码 最初我使用time.sleep(),但问题是代码需要一秒钟左右的时间才能运行,因此会失去同步 我写了这个,我觉得不整洁,因为我不喜欢使用while循环。有更好的办法吗Python 3.x python-以精确的时间间隔循环,python-3.x,time,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.
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
将日期时间导入为dt
将numpy作为np导入
迭代次数=100
tstep=dt.timedelta(秒=5)
对于np.arange中的i(迭代):
startTime=dt.datetime.now()
myfunction(DoesLodSofColthings)
而dt.datetime.now()
1==1
考虑跟踪代码运行所需的时间(一个计时器()
函数),然后在完成后睡眠15-exec\u time
秒
start = datetime.now()
do_many_important_things()
end = datetime.now()
exec_time = end - start
time.sleep(15-exec_time.total_seconds())
理想情况下,可以使用线程来实现这一点。你可以这样做
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()
要启动循环计时器。可以使用简单的bash行:
watch -n 15m python yourcode.py
这是否意味着如果进程仍在运行,那么它将在不同的cpu线程上启动下一个进程?这不准确。每次循环我都会经历大约0.01秒的移动。我的周期函数是print(datetime.now())