Comment mettre mon programme Python en veille pendant 50 millisecondes?

536

Comment mettre mon programme Python en veille pendant 50 millisecondes?

TK.
la source

Réponses:

822
from time import sleep
sleep(0.05)

Référence

Will Boyce
la source
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.

ya23
la source
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)
Dan Olson
la source
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)
okie
la source
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
anms_pro
la source