Atexit и sched

Модуль atexit реализует интерфейс, позволяющий регистрировать или отменять регистрации функций, которые должны быть вызваны по зваершении программы.

Зарегистрированные функции выполняются в порядке, обратном регистрации. При регистрации функции ей можно передать аргументы либо зарегистрирвоать через декоратор без аргументов.

Для отмены зарегистрирвоанной функции, ее регистарция не обязательна. Это позволяет отменять произвольные колбеки без подъема ошибок.

В следующих случаях вызов зарегистрированных функций не состоится:

  • в случае поступления сигнала от другого процесса (смотри [multiprocess])
  • при явном вызове os._exit() для завершения прогнраммы
  • при возникновении фатальной ошибки в интеретаторе

sys.exit() гарантирует выполнение колбека перед завершением

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

sched сопряжен с другими библиотеками [date-and-time-in-python]

Есть два режима:

  • запуск событий с задержками
  • одновременный запуск с приоритетами

Шедалер запускает все в одном потоке. Если предыдущий поток не завершен, то передача следующему будет отложено. Это может привести к тому, что последующие события будут запускаться позже, чем ожидается. В этом случае можно воспользоваться отменой события.

Смотри еще: