





Используйте time.sleep():
import time
time.sleep(50 / 1000)
См. Документацию Python: https://docs.python.org/library/time.html#time.sleep
from time import sleep
sleep(0.05)
Но как это фактически работает? Например, часто ли фактическое разрешение по времени составляет 16,66 мс (1/60 секунды)? В этом конкретном случае время ожидания составляет точно, в 3 раза превышающее временное разрешение. Однако как насчет округления? Что, если 3 на самом деле составляет 2,9999999 из-за операций с плавающей запятой и округляется до 2 (фактическое время сна = 0,0333333 с = 33,33 мс)?
Обратите внимание: если вы полагаетесь на сон с точно 50 ms, вы этого не получите. Это как раз об этом.
Имейте в виду, что это может быть на 10 или 15 мс больше, чем на некоторых платформах.
Это постоянная задержка в данной системе?
@ user391339 По опыту не согласуется. Приоритет потока / процесса, средняя загрузка ЦП, доступная память и множество других факторов делают все вызовы неточными. Чем более загружена система, тем выше неточность.
Может быть интересно узнать, что «функция [time.sleep(secs)] спит по меньшей мереsecs», начиная с Python 3.5, согласно документации.
Вы также можете использовать pyautogui как:
import pyautogui
pyautogui._autoPause(0.05, False)
Если первый аргумент не равен None, тогда он будет приостановлен на секунды первого аргумента, в этом примере: 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)
так или иначе, лучше использовать time.sleep, чем это, но если вы хотите, чтобы ваша программа была чистой autopygui, тогда это может быть выходом.
Вы также можете сделать это с помощью функции Timer().
Код:
from threading import Timer
def hello():
print("Hello")
t = Timer(0.05, hello)
t.start() # After 0.05 seconds, "Hello" will be printed
Как работает фактически для субсекундного сна? Часто таймеры имеют временное разрешение 16,66 мс.
Есть модуль под названием «время», который может вам помочь. Я знаю два пути:
sleep
Sleep (Справка) просит программу подождать, а затем выполнить остальную часть кода.
Есть два способа использовать сон:
import time # Import whole time module
print("0.00 seconds")
time.sleep(0.05) # 50 milliseconds... make sure you put time. if you import time!
print("0.05 seconds")
Второй способ не импортирует весь модуль, а просто спит.
from time import sleep # Just the sleep function from module time
print("0.00 sec")
sleep(0.05) # Don't put time. this time, as it will be confused. You did
# not import the whole module
print("0.05 sec")
Используя время с момента Время Unix.
Этот способ полезен, если вам нужно запустить цикл. Но этот немного сложнее.
time_not_passed = True
from time import time # You can import the whole module like last time. Just don't forget the time. before to signal it.
init_time = time() # Or time.time() if whole module imported
print("0.00 secs")
while True: # Init loop
if init_time + 0.05 <= time() and time_not_passed: # Time not passed variable is important as we want this to run once. !!! time.time() if whole module imported :O
print("0.05 secs")
time_not_passed = False
@CsabaToth, если у вас есть реализация Python, соответствующая спецификациям вашей ОС, приведенное выше не зависит от ОС.