Если вы хотите установить задержку в скрипте 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()
.