все Python 3threadingпонятие
threading.Timer
потоки
Поток, который один раз вызовет функцию через заданное число секунд; пока он ждёт, вызов можно отменить методом cancel().
Синтаксис
t = threading.Timer(interval, function, args=None, kwargs=None)
t.start() / t.cancel()
Timer — подкласс Thread: без start() ничего не произойдёт, а функция выполнится в отдельном потоке, не в главном. Срабатывает однократно — для повтора создайте новый таймер в самой функции или крутите цикл с Event.wait(interval). cancel() помогает, только пока таймер ждёт: начавшая работу функция доработает. Интервал отсчитывается от start(), а не от создания, и недемонический таймер не даст программе завершиться, пока не сработает или не будет отменён.
Примеры
import threading
fired = []
t = threading.Timer(0.05, fired.append, args=['tick'])
t.start()
t.join()
print(fired, isinstance(t, threading.Thread)) # → ['tick'] True
import threading
fired = []
t = threading.Timer(0.5, fired.append, args=['tick'])
t.start()
t.cancel() # таймер ещё ждёт — отмена успевает
t.join()
print(fired, t.is_alive()) # → [] False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности