非常に単純なタイマーを考えてみましょう。
start = time.time()
end = time.time() - start
while(end<5):
end = time.time() - start
print end
このタイマーはどのくらい正確ですか?リアルタイムクロックと比較して、これはどのくらい同期され、リアルタイムですか?
本当の質問です。
Python で正確に測定できる最小の時間スケールは?
これは完全にプラットフォームに依存します。timeit.default_timer()
関数を使用すると、プラットフォームに最も正確なタイマーが返されます。
ドキュメントから:
プラットフォーム固有の方法で、デフォルト タイマーを定義します。Windows では、の粒度
time.clock()
はマイクロ秒ですが、time.time()
の粒度は 1/60 秒です。Unix では、time.clock()
1/100 秒の粒度があり、time.time()
はるかに正確です。
したがって、Windows ではマイクロ秒を取得し、Unix ではプラットフォームが提供できる精度を取得します。これは通常、1/100 秒よりも (はるかに) 優れています。
これは、実行しているシステムに完全に依存します.Pythonに時間を追跡する方法があるという保証はまったくありません.
とはいえ、最新のシステムでミリ秒単位の精度が得られると想定するのはかなり安全ですが、それを超えると、実際にはシステムに大きく依存します。ドキュメントを引用するには:
このモジュールは常に利用可能ですが、すべての機能がすべてのプラットフォームで利用できるわけではありません。このモジュールで定義されているほとんどの関数は、同じ名前のプラットフォーム C ライブラリ関数を呼び出します。これらの関数のセマンティクスはプラットフォームによって異なるため、プラットフォームのドキュメントを参照すると役立つ場合があります。
と:
さまざまなリアルタイム関数の精度は、それらの値または引数が表現される単位によって示される精度よりも低い場合があります。たとえば、ほとんどの Unix システムでは、時計は 1 秒間に 50 回または 100 回しか「時を刻みません」。