Comment mettre mon programme Python en veille pendant 50 millisecondes?


536

Comment mettre mon programme Python en veille pendant 50 millisecondes?

Réponses:


822
from time import sleep
sleep(0.05)

Référence


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

83

Notez que si vous comptez sur un sommeil prenant exactement 50 ms, vous n'obtiendrez pas cela. Ce sera juste à ce sujet.


35
Il peut être 10 ou 15 ms plus long que celui sur certaines plates-formes, alors soyez averti.
Kylotan

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

7
@ user391339 Par expérience, ce n'est pas cohérent. La priorité des threads / processus, la charge moyenne du processeur, 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.
David

2
Peut être intéressant de savoir cependant que «la fonction [ time.sleep(secs)] dort au moins secs » depuis Python 3.5 selon la documentation.
Elias Strehle

67
import time
time.sleep(50 / 1000)

13
from __future__ import divisionpour éliminer ce piège.
Nick T

1
les unités sont en secondes, pas en millisecondes
Nikhil VJ

2

peut également utiliser pyautogui comme

import pyautogui
pyautogui._autoPause(0.05,False)

si le premier n'est pas None, alors il s'arrêtera pour le premier arg deuxième, dans cet exemple: 0,05 sec

si le premier est Aucun, et le deuxième argument est Vrai, alors il dormira pour le paramètre de pause globale qui est défini avec

pyautogui.PAUSE = int

si vous vous demandez la raison, consultez le code source:

def _autoPause(pause, _pause):
    """If `pause` is not `None`, then sleep for `pause` seconds.
    If `_pause` is `True`, then sleep for `PAUSE` seconds (the global pause setting).

    This function is called at the end of all of PyAutoGUI's mouse and keyboard functions. Normally, `_pause`
    is set to `True` to add a short sleep so that the user can engage the failsafe. By default, this sleep
    is as long as `PAUSE` settings. However, this can be override by setting `pause`, in which case the sleep
    is as long as `pause` seconds.
    """
    if pause is not None:
        time.sleep(pause)
    elif _pause:
        assert isinstance(PAUSE, int) or isinstance(PAUSE, float)
        time.sleep(PAUSE)

1
en quelque sorte, il vaut mieux utiliser time.sleepplutôt que cela, mais si vous voulez que votre programme soit pur autopygui, alors cela peut être un moyen.
okie

2

Vous pouvez également le faire en utilisant la 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.