ホームページ > バックエンド開発 > Python チュートリアル > Python の `time.sleep()` 関数はどのくらい正確ですか?またその精度を向上するにはどうすればよいですか?

Python の `time.sleep()` 関数はどのくらい正確ですか?またその精度を向上するにはどうすればよいですか?

DDD
リリース: 2024-11-23 01:14:33
オリジナル
416 人が閲覧しました

How Accurate is Python's `time.sleep()` Function, and How Can I Improve Its Precision?

Python の time.sleep() 関数の精度の測定

Python の time.sleep() 関数は、プログラムの実行を一時停止するのに便利なツールです。ただし、特に浮動小数点数を使用する場合、精度に関して疑問があります。

time.sleep() の精度

time.sleep() の精度は、基礎となるオペレーティング システムによって異なります。 (OS)。 Windows などの非リアルタイム OS の最小スリープ間隔は約 10 ~ 13 ミリ秒です。

これは何を意味しますか? 50 ミリ秒 (0.05 秒) スリープしようとすると、time.sleep() は最小間隔 (10 ~ 13 ミリ秒) から約 50 ミリ秒だけ一時停止します。

精度を高めるためのループ

精度を向上させるために、time.sleep() の周囲にループを実装することをお勧めします。関数が意図した時刻より前にウェイクアップした場合、残りの期間スリープ状態に戻ります。

リアルタイム カーネル

より正確なスリープ間隔が必要な場合は、疑似実数の使用を検討してください。 -time カーネル (Ubuntu の rt カーネル (RT_PREEMPT パッチ セット) など)。これにより、最小スリープ間隔が約 1 ミリ秒に短縮される可能性があります。

さらなる考慮事項

非リアルタイム Linux カーネルの最小スリープ間隔は 1 ミリ秒に近くなりますが、時間によっては異なる場合があります。 -決定的な方法。

ループの例精度

精度を確保するためのループの例を次に示します:

import time

target_sleep_time = 0.05  # 50 milliseconds

start_time = time.time()
while True:
    elapsed_time = time.time() - start_time
    if elapsed_time >= target_sleep_time:
        break
    time.sleep(target_sleep_time - elapsed_time)
ログイン後にコピー

以上がPython の `time.sleep()` 関数はどのくらい正確ですか?またその精度を向上するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート