1. ホーム
  2. python

[解決済み] Pythonのtime.sleep()はどの程度正確か?

2022-11-26 06:20:49

質問

のような浮動小数点数を与えることができます。

time.sleep(0.5)

というのがありますが、どの程度の精度なのでしょうか?もし私が

time.sleep(0.05)

は、本当に50ms程度スリープするのでしょうか?

どのように解決するのですか?

time.sleep関数の精度は、使用しているOSのスリープの精度に依存します。 Windows のような非リアルタイム OS の場合、スリープできる最小の間隔は約 10-13ms です。 私は、最小の 10-13ms を超える場合、その時間の数ミリ秒以内で正確にスリープするのを見たことがあります。

更新しました。 以下に引用するドキュメントで言及されているように、スリープをループで行うのが一般的で、それによって早く目が覚めてしまった場合は、必ずスリープに戻るようにします。

また、Ubuntu を実行している場合、rt カーネル パッケージ (少なくとも Ubuntu 10.04 LTS では) をインストールすることにより、擬似リアルタイム カーネルを (RT_PREEMPT パッチ セットで) 試すことができることを述べておきます。

編集: 修正 非リアルタイムの Linux カーネルは、最小スリープ間隔が 10ms よりも 1ms に近いですが、非決定論的な方法で変化します。