Como faço para meu programa Python dormir por 50 milissegundos?

536

Como faço para meu programa Python dormir por 50 milissegundos?

TK.
fonte

Respostas:

822
from time import sleep
sleep(0.05)

Referência

Will Boyce
fonte
7
@CsabaToth, desde que você tenha uma implementação Python que atenda às especificações do seu sistema operacional, a descrição acima é independente do sistema operacional.
21718 Chris
83

Observe que se você confiar no sono levando exatamente 50 ms, não conseguirá isso. Será apenas sobre isso.

ya23
fonte
35
Pode demorar 10 ou 15ms a mais do que isso em algumas plataformas, portanto, esteja avisado.
Kylotan
3
É um atraso consistente em um determinado sistema?
user391339
7
@ user391339 Por experiência, não é consistente. A prioridade do encadeamento / processo, a média de carga da CPU, a memória disponível e uma infinidade de outros fatores tornam todas as chamadas imprecisas. Quanto mais ocupado o sistema, maior a imprecisão.
David David
2
Pode ser interessante saber que 'a função [ time.sleep(secs)] dorme pelo menos secs ' desde o Python 3.5, de acordo com a documentação.
Elias Strehle 30/10/19
67
import time
time.sleep(50 / 1000)
Dan Olson
fonte
13
from __future__ import divisionpara eliminar essa pegadinha.
Nick T
1
as unidades estão em segundos, não em milissegundos
Nikhil VJ
2

também pode usar o pyautogui como

import pyautogui
pyautogui._autoPause(0.05,False)

se first não for None, ele será pausado pelo primeiro arg segundo, neste exemplo: 0,05 seg

se o primeiro for None e o segundo argumento for True, ele será suspenso para a configuração de pausa global definida com

pyautogui.PAUSE = int

Se você está se perguntando o motivo, consulte o código-fonte:

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
fonte
1
de alguma forma, é melhor usar um time.sleeppouco do que isso, mas se você deseja que seu programa seja puro autopygui, isso pode ser uma maneira.
okie
2

Você também pode fazer isso usando a Timer()função

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
anms_pro
fonte