Python のthreading.Timer
時間精度は何に依存していますか?
使用するOSに依存しますか?
使用する Python 実装に依存しますか?
間隔にもよる?
どのようにベンチマークできますか?
ベンチマークはすでにありますか?
Python のthreading.Timer
時間精度は何に依存していますか?
使用するOSに依存しますか?
使用する Python 実装に依存しますか?
間隔にもよる?
どのようにベンチマークできますか?
ベンチマークはすでにありますか?
CPython では、threading.Timer の精度 (待機部分) は Condition.wait() 呼び出しに基づいています。
Condition.wait() (ここで実装min(delay * 2, remaining, .05)
) は、遅延が最初に設定された場所の遅延を伴う連続したスリープによって行われ0.0005 # 500 us -> initial delay of 1 ms
ます。この実装 (OS に依存しない) によれば、精度は少なくとも time.sleep の精度であると言えます。
ただし、 time.sleep() の精度は、使用される OS に基づいています (実装はここにあります: floatsleep() )。Windows では、WaitForSingleObject()
内部 Windows タイマーで を使用し、Linux ではselect()
メソッドを使用します。
少なくとも、スリープ遅延とは別に、OS の負荷が Python プロセスの反応性に干渉する可能性があるため、スケジューリング アルゴリズムも精度に影響を与える可能性があります。