Як змусити мою програму Python спати протягом 50 мілісекунд?


536

Як змусити мою програму Python спати протягом 50 мілісекунд?

Відповіді:


822
from time import sleep
sleep(0.05)

Довідково


7
@CsabaToth до тих пір, поки у вас є реалізація Python, яка не залежить від вашої ОС, вищезазначене не залежить від ОС.
Кріс

83

Зауважте, що якщо ви будете розраховувати на сон, який займає рівно 50 мс, ви цього не отримаєте. Це буде саме про це.


35
Це може бути на 10 або 15 мс довше, ніж на деяких платформах, тому будьте попереджені.
Kylotan

3
Це послідовна затримка в даній системі?
користувач391339

7
@ user391339 З досвіду це не відповідає. Пріоритет теми / процесу, середнє завантаження процесора, наявна пам'ять та безліч інших факторів роблять усі дзвінки неточними. Чим зайнятіша система, тим вище неточність.
Давид

2
Можливо, цікаво знати, що "функція [ time.sleep(secs)] спить щонайменше secs ", починаючи з Python 3.5 відповідно до документації.
Еліас Стреле


2

Можна також використовувати pyautogui як

import pyautogui
pyautogui._autoPause(0.05,False)

якщо перший не є None, тоді він зробить паузу для першого arg другого в цьому прикладі: 0,05 сек

якщо перший - None, а другий аргумент - True, то він буде спати для налаштування глобальної паузи, яке встановлено з

pyautogui.PAUSE = int

якщо вас цікавить причина, дивіться вихідний код:

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
якось, краще time.sleepскоріше використовувати це, але якщо ви хочете, щоб ваша програма була чистою автопігуєю, то це може бути способом.
okie

2

Ви також можете це зробити за допомогою Timer()функції.

Код:

from threading import Timer

def hello():
  print("Hello")

t = Timer(0.05, hello)
t.start()  # After 0.05 seconds, "Hello" will be printed
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.