Как я могу сделать задержку в Python? - PullRequest
2490 голосов
/ 04 февраля 2009

Я хотел бы знать, как поместить задержку в скрипт Python.

Ответы [ 12 ]

5 голосов
/ 10 января 2019

Если вы хотите установить задержку в скрипте Python:

Используйте time.sleep или Event().wait, например:

from threading import Event
from time import sleep

delay_in_sec = 2

# use time.sleep like this
sleep(delay_in_sec)         # returns None
print(f'slept for {delay_in_sec} seconds')

# or use Event().wait like this
Event().wait(delay_in_sec)  # returns False
print(f'waited for {delay_in_sec} seconds')       

Однако, если вы хотите отложить выполнение функции, сделайте следующее:

Используйте threading.Timer как это:

from threading import Timer 

delay_in_sec = 2

def hello(delay_in_sec):
    print(f'function called after {delay_in_sec} seconds')

t = Timer(delay_in_sec, hello, [delay_in_sec])  # hello function will be called 2 sec later with [delay_in_sec] as *args parameter
t.start()  # returns None
print("Started")

Выходы:

Started
function called after 2 seconds         

Зачем использовать более поздний подход?

  • Не не останавливает выполнение всего сценария. (кроме функции, которую вы передаете)
  • После запуска таймера вы также можете остановить его, выполнив timer_obj.cancel().
5 голосов
/ 05 июня 2018

В то время как все остальные предложили модуль де-факто time, я подумал, что поделюсь другим методом с использованием функции matplotlib pyplot, pause.

Пример

from matplotlib import pyplot as plt
plt.pause(5)    # Pauses the program for 5 seconds

Обычно это используется для предотвращения исчезновения сюжета сразу после его построения или для создания грубых анимаций.

Это сэкономит вам import, если вы уже импортировали matplotlib.

...