N秒ごとに発生させたい作業単位があります。私が単純化したものを使用する場合
minute = 60
while True:
doSomeWork()
time.sleep(minute)
かかる時間にもよりますdoSomeWork()
が、実際のループ期間は 1 分プラスその時間になります。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 では、シグナルから itimer を使用して、探していることを実行できます。
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用に開発されているチューリップのものもこれを簡単にするようです。