Spec-Zone.ru › Python 3.7

sched — Планировщик событий

Исходный код: Lib/sched.py

Модуль sched определяет класс, реализующий универсальный планировщик событий:

class sched.scheduler(timefunc=time.monotonic, delayfunc=time.sleep)

Класс scheduler определяет общий интерфейс для планирования событий. Для работы с «внешним миром» необходимы две функции — timefunc должна вызываться без аргументов и возвращать число (время в любых единицах). Функция delayfunc должна вызываться с одним аргументом, совместимым с результатом timefunc, и должна обеспечить задержку на указанное количество единиц времени. Функция delayfunc также вызывается с аргументом 0 после выполнения каждого события, чтобы предоставить возможность другим потокам выполняться в многопоточных приложениях.

Изменено в версии 3.3: Параметры timefunc и delayfunc являются необязательными.

Изменено в версии 3.3: Класс scheduler может безопасно использоваться в многопоточных средах.

Пример:

>>> import sched, time
>>> s = sched.scheduler(time.time, time.sleep)
>>> def print_time(a='default'):
...     print("From print_time", time.time(), a)
...
>>> def print_some_times():
...     print(time.time())
...     s.enter(10, 1, print_time)
...     s.enter(5, 2, print_time, argument=('positional',))
...     s.enter(5, 1, print_time, kwargs={'a': 'keyword'})
...     s.run()
...     print(time.time())
...
>>> print_some_times()
930343690.257
From print_time 930343695.274 positional
From print_time 930343695.275 keyword
From print_time 930343700.273 default
930343700.276

Объекты планировщика

scheduler экземпляры имеют следующие методы и атрибуты:

scheduler.enterabs(time, priority, action, argument=(), kwargs={})

Планирует новое событие. Аргумент time должен быть числового типа, совместимого с возвращаемым значением функции timefunc, переданной в конструктор. События, запланированные на одно и то же time, будут выполняться в порядке их priority. Меньшее число соответствует более высокому приоритету.

Выполнение события означает выполнение action(*argument, **kwargs). argument — последовательность, содержащая позиционные аргументы для action. kwargs — словарь, содержащий именованные аргументы для action.

Возвращаемое значение — событие, которое может быть использовано для последующей отмены события (см. cancel()).

Изменено в версии 3.3: Параметр argument является необязательным.

Добавлена в версии 3.3: Параметр kwargs был добавлен.

scheduler.enter(delay, priority, action, argument=(), kwargs={})

Планирует событие через delay единиц времени. Помимо относительного времени, другие аргументы, эффект и возвращаемое значение аналогичны тем, что у enterabs().

Изменено в версии 3.3: Параметр argument является необязательным.

Добавлена в версии 3.3: Параметр kwargs был добавлен.

scheduler.cancel(event)

Удаляет событие из очереди. Если event не является событием, находящимся в очереди, этот метод вызовет исключение ValueError.

scheduler.empty()

Возвращает True, если очередь событий пуста.

scheduler.run(blocking=True)

Выполняет все запланированные события. Этот метод ожидает (используя функцию delayfunc() переданную в конструктор) следующего события, затем выполняет его и так далее до тех пор, пока не останется запланированных событий.

Если blocking равно false, выполняет запланированные события, которые должны истечь в ближайшее время (если есть), а затем возвращает крайний срок следующего запланированного вызова в планировщике (если есть).

Исключения могут быть возбуждены либо функцией action, либо delayfunc. В обоих случаях планировщик сохранит согласованное состояние и передаст исключение. Если исключение вызвано action, событие не будет пытаться выполниться в последующих вызовах run().

Если последовательность событий занимает больше времени, чем доступно до следующего события, планировщик просто отстанет. События не будут пропущены; код вызова отвечает за отмену событий, которые больше не актуальны.

Добавлена в версии 3.3: Параметр blocking был добавлен.

scheduler.queue

Только для чтения атрибут, возвращающий список предстоящих событий в порядке их выполнения. Каждое событие представлено как именованную кортеж со следующими полями: время, приоритет, действие, аргумент, kwargs.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/sched.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API