2
一定の時間間隔で何度かタスクを繰り返したいのですが、私はそれを一様なやりかたで行いたいので、1秒間に4回タスクを実行したい場合はt = 0,0.25,0.5および0.75で実行される。今私がやっているので、アクションをx秒間に一度だけ実行する
:
import math
import socket
s = socket.socket(...) #not important
time_step = 1./num_times_executed
for _ in num_times_executed:
now = time.time()
s.sendto(...) #action i do
time.sleep(max(0,time_step-(time.time()-now)))
は、しかし、多くのオーバーヘッドがあり、大きなループは私が得るより多くのドリフトです。たとえばnum_times_executed = 800の場合、1.1秒かかるので〜10%間違っています...
精度が良い方法がありますか?