メディアファイルを再生するのと同じように、実行するたびにコードの一部をまったく同じ時間で実行したい... (同じコードが毎回まったく同じ時間で実行される)
これはpythonで可能ですか?
メディアファイルを再生するのと同じように、実行するたびにコードの一部をまったく同じ時間で実行したい... (同じコードが毎回まったく同じ時間で実行される)
これはpythonで可能ですか?
これでうまくいくはずです:
def run_with_delay(funcs, interval):
for f in funcs[:-1]:
before = time()
f()
# compensate the interval with the execution time.
# NB: careful for functions that have a greater
# execution time than interval
after = time()
if after - before < interval:
sleep(interval - (after - before))
# last function is taken separately because we don't need
# an extra useless sleep
funcs[-1]()
これは、(どの言語でも) 言語構造によって保証できるとは思いません。リアルタイム オペレーティング システムを使用する必要があります。マルチメディア アプリケーションは、デバイス レベルのバッファリングを利用して、OS プロセス スケジューラのタイミング ジッタを補正していると思います。
複数のスレッドの同時実行をシミュレートするために命令をインターリーブするオペレーティング システムでは、これは不可能であると考えるべきです。
コードの期限を規定するには、リアルタイムのライブラリまたは言語が必要ですが、それでも割り当てられた時間内に実行されることは保証されません。