Как мне заставить мою программу Python спать на 50 миллисекунд?

Как мне заставить мою программу Python спать на 50 миллисекунд?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
612
0
560 314
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Используйте time.sleep():

import time
time.sleep(50 / 1000)

См. Документацию Python: https://docs.python.org/library/time.html#time.sleep

Ответ принят как подходящий

Используйте time.sleep()

from time import sleep
sleep(0.05)

@CsabaToth, если у вас есть реализация Python, соответствующая спецификациям вашей ОС, приведенное выше не зависит от ОС.

Chris 21.11.2018 17:57

Но как это фактически работает? Например, часто ли фактическое разрешение по времени составляет 16,66 мс (1/60 секунды)? В этом конкретном случае время ожидания составляет точно, в 3 раза превышающее временное разрешение. Однако как насчет округления? Что, если 3 на самом деле составляет 2,9999999 из-за операций с плавающей запятой и округляется до 2 (фактическое время сна = 0,0333333 с = 33,33 мс)?

Peter Mortensen 07.02.2021 02:01

Обратите внимание: если вы полагаетесь на сон с точно 50 ms, вы этого не получите. Это как раз об этом.

Имейте в виду, что это может быть на 10 или 15 мс больше, чем на некоторых платформах.

Kylotan 17.01.2009 21:41

Это постоянная задержка в данной системе?

user391339 19.02.2018 01:00

@ user391339 По опыту не согласуется. Приоритет потока / процесса, средняя загрузка ЦП, доступная память и множество других факторов делают все вызовы неточными. Чем более загружена система, тем выше неточность.

David 28.01.2019 21:44

Может быть интересно узнать, что «функция [time.sleep(secs)] спит по меньшей мереsecs», начиная с Python 3.5, согласно документации.

Elias Strehle 30.10.2019 17:11

Вы также можете использовать 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, тогда это может быть выходом.

okie 15.09.2019 03:39

Вы также можете сделать это с помощью функции 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 мс.

Peter Mortensen 07.02.2021 02:08

Есть модуль под названием «время», который может вам помочь. Я знаю два пути:

  1. 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")
    
  2. Используя время с момента Время 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
    

Другие вопросы по теме