私はスケジューリング機能と将来のイベントのキューが時間順に並べられたスケジューラを持っています。 UNIXタイムスタンプと通常のtime.time()
を使用しています。スケジューラの一つの断片はこれにほぼ同等である:単調な時間の正確な時間のスケジューリング
eventtime
がいずれかの計算遅延に基づくことができる
# select the nearest event (eventfunc at eventime)
sleeptime = eventtime - time.time()
# if the sleep gets interrupted,
# the whole block will be restarted
interruptible_sleep(sleeptime)
eventfunc()
:
eventtime = time.time() + delay_seconds
又は正確な日付と時刻に基づいて、例えば:
eventtime = datetime(year,month,day,hour,min).timestamp()
ここでは、単調な時間をPythonで使用しています。私は単調な時間を使用するようにスケジューラを変更することを検討しています。スケジューラは、彼らが言う単調な時間を使用することになっています。
遅延で問題ありません:
sleeptime = eventtime - time.monotonic()
:
eventtime = time.monotonic() + delay_seconds
しかし、私は最善の方法は、それがあるようなコードを残すことだと思う正確な時間を持ちます。あれは正しいですか?
「はい」の場合は、単調な時間に基づくイベント・キューと通常の時間に基づくイベント・キューの2つが必要です。私はその考えがあまり好きではありません。
['sched'標準モジュール](https://docs.python.org/3/library/sched.html)をご覧ください。これは時間操作のバックエンドとは独立して設計されており、デフォルトで 'time.monotonic'を使用します。 –