Maison > développement back-end > Tutoriel Python > Quelle est la précision de la fonction « time.sleep() » de Python et comment puis-je améliorer sa précision ?

Quelle est la précision de la fonction « time.sleep() » de Python et comment puis-je améliorer sa précision ?

DDD
Libérer: 2024-11-23 01:14:33
original
416 Les gens l'ont consulté

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

Mesurer la précision de la fonction time.sleep() de Python

La fonction time.sleep() de Python est un outil utile pour suspendre l'exécution d'un programme. Cependant, des questions se posent concernant sa précision, en particulier lors de l'utilisation de nombres à virgule flottante.

Précision de time.sleep()

La précision de time.sleep() dépend du système d'exploitation sous-jacent. (OS). Les systèmes d'exploitation en temps différé, tels que Windows, ont un intervalle de veille minimum d'environ 10 à 13 millisecondes.

Qu'est-ce que cela signifie ? Si vous essayez de dormir pendant 50 millisecondes (0,05 seconde), time.sleep() ne peut s'arrêter que pendant environ 50 millisecondes à partir de l'intervalle minimum (10-13 ms).

Boucle pour la précision

Pour améliorer la précision, il est recommandé d'implémenter une boucle autour de time.sleep(). Si la fonction se réveille avant l'heure prévue, elle se rendormira pour la durée restante.

Noyaux en temps réel

Si vous avez besoin d'intervalles de sommeil plus précis, pensez à utiliser un pseudo réel -time kernel, tel que le noyau rt d'Ubuntu (ensemble de correctifs RT_PREEMPT). Cela peut réduire l'intervalle de sommeil minimum à environ 1 milliseconde.

Autres considérations

Les noyaux Linux non temps réel ont un intervalle de sommeil minimum plus proche de 1 milliseconde, mais il peut varier en un temps non réel. -manière déterministe.

Exemple avec boucle pour la précision

Voici un exemple avec une boucle pour assurer précision :

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)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal