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


536

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

Respostas:


822
from time import sleep
sleep(0.05)

Referência


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.


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)

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)

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.