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


536

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

Odpowiedzi:


822
from time import sleep
sleep(0.05)

Odniesienie


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.


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)

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)

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.