Come faccio a far dormire il mio programma Python per 50 millisecondi?


536

Come faccio a far dormire il mio programma Python per 50 millisecondi?

Risposte:


822
from time import sleep
sleep(0.05)

Riferimento


7
@CsabaToth fino a quando si dispone di un'implementazione di Python conforme alle specifiche del proprio sistema operativo, quanto sopra è indipendente dal sistema operativo.
Chris,

83

Nota che se fai affidamento sul sonno impiegando esattamente 50 ms, non lo otterrai. Sarà solo a questo proposito.


35
Potrebbe essere 10 o 15ms più lungo di quello su alcune piattaforme, quindi attenzione.
Kylotan,

3
È un ritardo coerente su un determinato sistema?
user391339,

7
@ user391339 Per esperienza non è coerente. Priorità di thread / processo, media del carico della CPU, memoria disponibile e una moltitudine di altri fattori rendono imprecise tutte le chiamate. Più occupato è il sistema, maggiore è l'imprecisione.
David,

2
Potrebbe essere interessante sapere che 'la funzione [ time.sleep(secs)] dorme almeno secs ' da Python 3.5 secondo la documentazione.
Elias Strehle,

67
import time
time.sleep(50 / 1000)

13
from __future__ import divisionper eliminare quel gotcha.
Nick T,

1
le unità sono in secondi, non millisecondi
Nikhil VJ

2

può anche usare pyautogui come

import pyautogui
pyautogui._autoPause(0.05,False)

se first non è None, si fermerà per il primo arg secondo, in questo esempio: 0,05 sec

se first è None e second arg è True, allora dormirà per l'impostazione di pausa globale che è impostata con

pyautogui.PAUSE = int

se ti stai chiedendo il motivo, vedi il codice sorgente:

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
in qualche modo, è meglio usare time.sleeppiuttosto che questo, ma se vuoi che il tuo programma sia un autopygui puro, allora questo può essere un modo.
Ok,

2

Puoi anche farlo usando la Timer()funzione.

Codice:

from threading import Timer

def hello():
  print("Hello")

t = Timer(0.05, hello)
t.start()  # After 0.05 seconds, "Hello" will be printed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.