Дополнительно
Как сделать временную задержку в Python?
Я хотел бы узнать, как поместить временную задержку в сценарий Python.
2622
12
Я хотел бы узнать, как поместить временную задержку в сценарий Python.
Вот еще один пример, где что-то выполняется примерно раз в минуту:
Вы можете использовать функцию
sleep()
в модулеtime
. Она может принимать аргумент float для субсекундного разрешения.В одном потоке я предлагаю функцию sleep:
Эта функция фактически приостанавливает обработку потока, в котором она вызывается операционной системой, позволяя другим потокам и процессам выполняться, пока она спит.
Используйте ее для этой цели или просто для задержки выполнения функции. Например:
"ура!" будет напечатано через 3 секунды после того, как я нажму Enter.
Пример использования
sleep
с несколькими потоками и процессамиОпять же,
sleep
приостанавливает ваш поток - он использует практически нулевую вычислительную мощность.Для демонстрации создайте скрипт следующего вида (сначала я попытался сделать это в интерактивной оболочке Python 3.5, но подпроцессы почему-то не могут найти функцию
party_later
):Пример вывода этого скрипта:
Многопоточность
Вы можете инициировать вызов функции в более позднее время в отдельном потоке с помощью объекта
Timer
threading:Пустая строка показывает, что функция печатается в стандартный вывод, и мне пришлось нажать Enter, чтобы убедиться, что я нахожусь в подсказке.
Преимущество этого метода в том, что пока поток
Timer
ждал, я мог заниматься другими делами, в данном случае нажать Enter один раз - до того, как функция выполнится (см. первую пустую подсказку).В библиотеке мультипроцессинга нет соответствующего объекта. Вы можете создать его, но, вероятно, он не существует по какой-то причине. Подпоток имеет гораздо больше смысла для простого таймера, чем целый новый подпроцесс.
Немного развлечений с сонным генератором.
Вопрос касается временной задержки. Это может быть фиксированное время, но в некоторых случаях нам может понадобиться задержка, измеряемая с момента последнего времени. Вот одно из возможных решений:
Задержка, измеренная с момента последнего пробуждения (регулярное пробуждение).
Ситуация может быть такой, что мы хотим делать что-то как можно регулярнее и не хотим возиться со всеми этими
last_time
,next_time
по всему коду.Генератор звукового сигнала
Следующий код (sleepy.py) определяет генератор
buzzergen
:Вызов регулярного генератора buzzergen
И запустив его, мы видим:
Мы также можем использовать его непосредственно в цикле:
Запустив его, мы можем увидеть:
Как мы видим, этот зуммер не слишком жесткий и позволяет нам нагнать регулярные интервалы сна, даже если мы проспали и выбились из привычного графика.
Задержки могут быть также реализованы с помощью следующих методов.
Первый способ
Второй способ задержки будет использовать неявный метод ждать:
Третий способ является более полезным, когда вы должны ждать до завершения конкретного действия или пока не будет найден элемент:
Библиотеки tkinter в стандартной библиотеке Python-это интерактивный инструмент, который можно импортировать. В принципе, можно создать кнопки и всплывающие окна и вещи, которые выглядят как окна, которые манипулируют с кодом.
Если вы использовать tkinter, не используйте время.Сон ()
, потому что он будет портить вашу программу. Это случилось со мной. Вместо этого используйте корень.после () и заменить значения на сколько секунд, а миллисекунд. Например, время.сна(1)
эквивалентно `корень.после(1000) в tkinter.В противном случае, время.сон()`, который многие ответы указывали, что путь.
Есть 5 методов, которые я знаю: время.сон()
,
с которым Pygame.время.ждать(), библиотек matplotlib'ы
pyplot.пауза(),
.после () " и " водитель.implicitly_wait()`.время.пример сна ()
(не использовать, если использовать Tkinter):`с которым Pygame.время.постой пример () (не рекомендуется, если вы не используете окно, с которым Pygame, но можно закрыть окно мгновенно):
библиотек matplotlib'pyplot функция S`.пример паузы () (не рекомендуется, если не используется график, но вы могли бы выйти сразу на графике):
Этот
.после способ ()
(лучше с Tkinter):Наконец,
водитель.способ implicitly_wait ()
(селен):Задержки сделали с Время, а конкретно время
.сон()
Функция.Чтобы просто сделать его ждать второго:
Это работает, потому что:
Извлечения спящий режим только от библиотеки, Что означает, что вы можете просто вызвать его с:
Вместо того, чтобы вводить
Которая несуразно длинное.
С помощью этого метода, вы не'т получить доступ к другим функциям время и вы можете'т иметь переменную под названием "Сон". Но вы можете создать переменную, называется "Время".
Делаем из [библиотека] импорт [функция] (, [функция2])` это здорово, если вы просто хотите, чтобы определенные части модуля.
Вы могли в равной степени творить как:
и у тебя есть доступ к другой функции Время, Как
времени.часы()
Как долго, как вы вводите время.[функция]()`, но вы не'т создать переменную времени, потому что его бы заменить импорт. Решение этого делатьчто позволит вам получить ссылку на библиотеки как "Т", позволяя вам делать:
Это работает в любой библиотеке.
ввода-вывода.сон
Заметил в последних версиях питона (Python 3.4 В или выше) вы можете использовать
ввода-вывода.сон
. Это'ы, связанные с асинхронного программирования и ввода-вывода. Проверьте следующий пример:Мы можете думать, что это будет "Спи" в течение 2 секунд для первого метода, а затем 3 секунды во втором методе, всего 5 секунд время выполнения этого кода. Но он будет печатать:
Рекомендую прочитать ввода-вывода официальную документацию для более подробной информации
Если вы хотите поставить задержку в скрипте Python:
Время использования
.сна
или `событие().подожди, как это:Однако, если вы хотите отсрочить исполнение функции этого:
Использовать
threading.Timer
такой:Выходы:
Зачем использовать позже подход?
Ли не останавливает выполнение всего скрипта. (за исключением функции вы передаете его)
timer_obj.отменить()
.Это простой пример задержки:
Другой, в Tkinter:
В то время как все остальные уже предложил де-факто "время" модуль, я думал, что я'd доля другой способ использования библиотек matplotlib
'функция S
pyplot, [
пауза`](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pause.html).Пример
Обычно это используется для предотвращения сюжет исчезнуть, как только она наносится или сырой анимации.
Это позволит сэкономить вам "импорт", если у вас уже есть
библиотек matplotlib
импортного производства.