¿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.