Python Glossary English

все 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Сообщить о неточности