我有一个工作单元,我希望每 N 秒发生一次。如果我使用简单的
minute = 60
while True:
doSomeWork()
time.sleep(minute)
根据需要多长时间doSomeWork()
,实际循环周期将是一分钟加上该时间。如果 doSomeWork() 所花费的时间不是确定性的,那么工作的周期就更不可预测了。
我想做的是这样的
minute = 60
start = time.process_time() #? i can imagine using this, but maybe there's something better?
while True:
doSomeWork()
start += minute
sleep_until(start) #? this is the function I'm in search of
(我正在使用 python 3.3)
更新:
在 Linux/OSX 上,我可以使用信号中的计时器来做我正在寻找的事情:
import signal
import datetime
def tick(_, __):
# doSomeWork()
print(datetime.datetime.now())
signal.setitimer(signal.ITIMER_REAL, 60, 60)
signal.signal(signal.SIGALRM, tick)
while True:
signal.pause()
看起来为 python3.4 开发的郁金香的东西也会让这很容易做到。