組み込みの sched モジュールを使用すると、将来のイベントをスケジュールできます。(ここのコードはすべて Python 3 です)。
import sched
import time
def print_something(x):
print(x)
s = sched.scheduler()
s.enter(1, 0, print_something, ['first'])
s.enter(2, 0, print_something, ['second'])
s.run()
現在の時刻を取得し、将来の指定された時刻まで待機する独自の関数を提供できます。デフォルトは time.monotonic (time.time の微調整バージョン) と time.sleep です。
次のように、busy-wait を使用して精度をわずかに向上させることができます。
import sched
import time
def print_something(x):
print(x)
def busy_wait(target):
while time.monotonic() < target:
pass
s = sched.scheduler(delayfunc=busy_wait)
s.enter(1, 0, print_something, ['first'])
s.enter(2, 0, print_something, ['second'])
s.run()
しかし、現実的には、デスクトップ OS には予期しない遅延の原因が非常に多いため、タイミングの制約がそれほど厳しい場合、リアルタイム OS なしでは許容できる結果を得ることはできません。