入力:プログラム開始からの相対的な浮動小数点値の配列(秒単位)。 [0.452,0.963,1.286,2.003、...]。それらは均等に離間していません。python:ビジーなループなしで異なる正確な時間にタスクを実行します。
所望の出力:出力これらの回でコンソールにテキスト(すなわち印刷「#」)
は、私の質問はこれについて移動するための最良の設計原理は何かということです。以下はtime.timeを使った私の素朴な解決法です。
times = [0.452, 0.963, 1.286, 2.003]
start_time = time.time()
for event_time in times:
while 1:
if time.time() - start_time >= event_time:
print '#'
break
上記のビジーループを使用すると、直感的に間違っているように感じられます(独自のスレッド内であっても)。
私はスケジュールに傾いたが、より良い設計オプションがないことを確認したいんだ:Executing periodic actions in Python
タイマーオブジェクトもあります:timers
編集:イベントのみ必要10msの精度なので、+は/ - 正確なイベント時刻から10ms。
質問には実際に1ミリ秒の精度が必要ですか? –
いいえ - 約10ミリ秒にする必要があります(正確な時刻の前後10ミリ秒でイベントが発生する可能性があります)。 –
[sched](https://docs.python.org/2/library/sched.html)モジュールをご覧ください。役立つかもしれません。 – khachik