¿Cómo hago para que mi programa Python duerma durante 50 milisegundos?


536

¿Cómo hago para que mi programa Python duerma durante 50 milisegundos?

Respuestas:


822
from time import sleep
sleep(0.05)

Referencia


77
@CsabaToth siempre que tenga una implementación de Python que cumpla con las especificaciones de su sistema operativo, lo anterior es independiente del sistema operativo.
Chris

83

Tenga en cuenta que si confía en que el sueño dure exactamente 50 ms, no obtendrá eso. Solo se tratará de eso.


35
Puede ser 10 o 15 ms más largo que eso en algunas plataformas, así que ten cuidado.
Kylotan

3
¿Es un retraso constante en un sistema dado?
user391339

77
@ user391339 Por experiencia no es consistente. La prioridad del subproceso / proceso, el promedio de carga de la CPU, la memoria disponible y una gran cantidad de otros factores hacen que todas las llamadas sean imprecisas. Cuanto más ocupado esté el sistema, mayor será la imprecisión.
David

2
Sin embargo, puede ser interesante saber que 'la función [ time.sleep(secs)] duerme al menos secs ' desde Python 3.5 de acuerdo con la documentación.
Elias Strehle

67
import time
time.sleep(50 / 1000)

13
from __future__ import divisionpara eliminar ese gotcha.
Nick T

1
las unidades están en segundos, no en milisegundos
Nikhil VJ

2

también puede usar pyautogui como

import pyautogui
pyautogui._autoPause(0.05,False)

si primero no es Ninguno, entonces se detendrá por el primer segundo argumento, en este ejemplo: 0.05 segundos

si el primero es Ninguno y el segundo argumento es Verdadero, se suspenderá para la configuración de pausa global que se establece con

pyautogui.PAUSE = int

Si se pregunta la razón, vea el código fuente:

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
de alguna manera, es mejor usarlo time.sleepque esto, pero si quieres que tu programa sea pura autopygui, entonces puede ser una forma.
okie

2

También puedes hacerlo usando la Timer()función.

Código:

from threading import Timer

def hello():
  print("Hello")

t = Timer(0.05, hello)
t.start()  # After 0.05 seconds, "Hello" will be printed
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.