790 votes

Comment faire pour que mon programme se mette en veille pendant 50 millisecondes ?

Comment faire pour que mon programme Python se mette en veille pendant 50 millisecondes ?

1175voto

Will Boyce Points 1910

Utilisez time.sleep()

from time import sleep
sleep(0.05)

10 votes

@CsabaToth tant que vous avez une implémentation de Python qui est conforme aux spécifications de votre système d'exploitation, ce qui précède est indépendant du système d'exploitation.

3 votes

Mais comment en fait travail ? Par exemple, la résolution temporelle réelle sera-t-elle souvent de 16,66 ms (1/60e de seconde) ? Dans ce cas particulier, le temps de sommeil est de exactement 3 fois la résolution temporelle. Cependant, qu'en est-il des arrondis ? Que se passe-t-il si 3 est en réalité 2,9999999 en raison des opérations en virgule flottante et qu'il est arrondi à 2 (temps de sommeil réel = 0,0333333 s = 33,33 ms) ?

124voto

ya23 Points 6491

Notez que si vous comptez sur la prise de sommeil exactement 50 ms, vous n'aurez pas ça. Ce sera juste à peu près ça.

51 votes

Il peut être de 10 ou 15 ms plus long que cela sur certaines plates-formes, soyez donc prévenus.

5 votes

S'agit-il d'un retard constant sur un système donné ?

12 votes

@user391339 Par expérience, ce n'est pas cohérent. La priorité des threads/processus, la charge moyenne du CPU, la mémoire disponible et une pléthore d'autres facteurs rendent tous les appels imprécis. Plus le système est occupé, plus l'imprécision est élevée.

99voto

Dan Olson Points 257

Utilisez time.sleep() :

import time
time.sleep(50 / 1000)

Voir la documentation Python : https://docs.python.org/library/time.html#time.sleep

19voto

Lucas Urban Points 178

Il existe un module appelé "time" qui peut vous aider. Je connais deux méthodes :

  1. sleep

    Dormir ( référence ) demande au programme d'attendre, puis d'exécuter le reste du code.

    Il y a deux façons d'utiliser le sommeil :

    import time # Import whole time module
    print("0.00 seconds")
    time.sleep(0.05) # 50 milliseconds... make sure you put time. if you import time!
    print("0.05 seconds")

    La deuxième façon n'importe pas le module entier, mais elle ne fait que dormir.

    from time import sleep # Just the sleep function from module time
    print("0.00 sec")
    sleep(0.05) # Don't put time. this time, as it will be confused. You did
                # not import the whole module
    print("0.05 sec")
  2. Utilisation du temps depuis Temps Unix .

    Cette méthode est utile si vous avez besoin qu'une boucle soit en cours d'exécution. Mais celle-ci est légèrement plus complexe.

    time_not_passed = True
    from time import time # You can import the whole module like last time. Just don't forget the time. before to signal it.
    
    init_time = time() # Or time.time() if whole module imported
    print("0.00 secs")
    while True: # Init loop
        if init_time + 0.05 <= time() and time_not_passed: # Time not passed variable is important as we want this to run once. !!! time.time() if whole module imported :O
            print("0.05 secs")
            time_not_passed = False

4voto

anms_pro Points 208

Vous pouvez également le faire en utilisant l'option Timer() fonction.

Code :

from threading import Timer

def hello():
  print("Hello")

t = Timer(0.05, hello)
t.start()  # After 0.05 seconds, "Hello" will be printed

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X