Jak sprawić, by mój program Python spał przez 50 milisekund?

536

Jak sprawić, by mój program Python spał przez 50 milisekund?

TK.
źródło

Odpowiedzi:

822
from time import sleep
sleep(0.05)

Odniesienie

Will Boyce
źródło
7
@CsabaToth tak długo, jak masz implementację Python, która jest zgodna ze specyfikacją w twoim systemie operacyjnym, powyższe jest niezależne od systemu operacyjnego.
Chris
83

Pamiętaj, że jeśli polegasz na śnie trwającym dokładnie 50 ms, nie dostaniesz tego. Chodzi o to.

ya23
źródło
35
Może to być 10 lub 15 ms dłużej niż na niektórych platformach, więc ostrzegamy.
Kylotan
3
Czy jest to spójne opóźnienie w danym systemie?
user391339,
7
@ user391339 Z doświadczenia nie jest spójny. Priorytet wątku / procesu, średnie obciążenie procesora, dostępna pamięć i mnóstwo innych czynników sprawiają, że wszystkie połączenia są nieprecyzyjne. Im bardziej zajęty jest system, tym większa jest niedokładność.
David
2
Być może warto wiedzieć, że „funkcja [ time.sleep(secs)] śpi przynajmniej secs ” od Python 3.5 zgodnie z dokumentacją.
Elias Strehle
67
import time
time.sleep(50 / 1000)
Dan Olson
źródło
13
from __future__ import divisionaby wyeliminować tę gotcha.
Nick T
1
jednostki są w sekundach, a nie milisekundach
Nikhil VJ
2

może również używać pyautogui jako

import pyautogui
pyautogui._autoPause(0.05,False)

jeśli pierwszy nie jest żaden, to zatrzyma się na pierwszy arg drugi, w tym przykładzie: 0,05 sek

jeśli pierwszy to None, a drugi argument to True, to przejdzie w tryb uśpienia w celu ustawienia globalnej pauzy, która jest ustawiona za pomocą

pyautogui.PAUSE = int

jeśli zastanawiasz się nad przyczyną, zobacz kod źródłowy:

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
źródło
1
jakoś lepiej jest użyć time.sleeptego niż tego, ale jeśli chcesz, aby Twój program był czystym autopygui, może to być sposób.
okie,
2

Możesz to również zrobić za pomocą Timer()funkcji.

Kod:

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
źródło