все Python 3timeпонятие
sched.scheduler
планировщик событий
Простой планировщик событий: вызывает функции через заданную задержку или в заданное время, по порядку времени и приоритета.
Синтаксис
s = sched.scheduler(timefunc=time.monotonic, delayfunc=time.sleep)
run() блокирует поток, пока очередь не опустеет, — это не фоновый таймер; для фоновой работы есть threading.Timer или asyncio. События не повторяются: периодическую задачу функция планирует заново сама. Приоритет (меньше — раньше) решает только при одинаковом времени, а два enter() с равной задержкой получают разное время — для приоритета нужен enterabs с общим моментом. Аргументы передаются кортежем — ('a',) с запятой. Исключение в действии выходит из run(), а остальные события остаются в очереди.
Примеры
import sched, time
s = sched.scheduler(time.monotonic, time.sleep)
log = []
now = time.monotonic()
s.enterabs(now + 0.02, 1, log.append, ('b',))
s.enterabs(now + 0.01, 1, log.append, ('a',))
s.enterabs(now + 0.01, 0, log.append, ('first',)) # то же время, приоритет выше
s.run() # блокирует, пока очередь не опустеет
print(log) # → ['first', 'a', 'b']
import sched
s = sched.scheduler()
event = s.enter(10, 1, print, ('never',))
print(s.empty()) # → False
s.cancel(event)
print(s.empty()) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности