Python 3.x python-以精确的时间间隔循环

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.

我想以精确的时间间隔(大约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
将日期时间导入为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())