Автор оригинала: Pankaj Kumar.
Давайте поговорим о модуле sched в Python. Во время работы с модулем datetime в Python вы , должно быть, столкнулись с функцией, которую вы хотели бы иметь и использовать в Python, то есть планирование .
Планирование событий , целенаправленная задача планирования, которая может использоваться для оповещения или выполнения событий на основе ввода времени или даты.
Планирование также рассматривалось в прошлом, и поэтому теперь у нас есть готовый к использованию модуль sched
.
В этой статье мы рассмотрим различные варианты использования и варианты использования этого модуля, но для простоты мы будем работать с модулем time
.
В случае, если вы обнаружите что-либо непонятное при работе с вашей собственной версией модуля sched
, вы можете ознакомиться с нашей статьей о работе с модулем datetime для быстрого обзора объектов datetime.
Установка модуля sched в Python
Вы будете удивлены, услышав это, но для этого модуля нет необходимости в установке или менеджере пакетов, так как он по умолчанию отображается в стандартной библиотеке для Python.
Даже в документации тоже! Если вы хотите посетить его для более четкого представления аргументов и ключевых слов, вы можете найти ссылку в ссылках в нижней части этой статьи.
Как использовать модуль sched?
Необходимым условием для работы с модулем sched является базовое понимание объектов datetime/time.
Если вы работали с модулем datetime
или только с модулем time
заранее, вам может быть приятно узнать, что модуль sched
действует как расширение datetime, как и другой модуль, dateutil .
1.0 Планировщик – Импорт модуля sched
Модуль sched
в целом состоит только из одного класса, и если вы хотите проверить его самостоятельно, вот исходный код .
Итак, что это значит для нас?
Короче говоря, есть только один класс, и поэтому мы создадим только один объект, который может использовать все функции класса планировщика.
Этот класс известен как планировщик
. Мы можем начать прямо сейчас, но, прежде чем мы начнем, мы сначала хотим импортировать модуль для работы с ним.
import sched, time
1.1 Как создать объект планировщика
Создание объекта планировщика довольно просто, и после импорта модуля sched
вам действительно нужно написать только одну строку, чтобы использовать его.
# Intializing s as the scheduler object s = sched.scheduler(time.time, time.sleep)
Эта одна строка предоставляет вам функциональность модуля time
для работы со временем и даже обеспечивает задержку, поддерживая многопоточные операции.
Это по существу создает переменную s
, которая создается как объект класса scheduler
модуля sched .
1.2 Работа с объектом планировщика
Здесь, на выходе, мы будем использовать функциональность, предоставляемую для работы с распечаткой множества объектов времени и времени, в которое была выполнена сама операция.
В этом крошечном фрагменте мы работаем с сутью модуля schedule
, создавая и вводя события.
Как и при работе с потоками, в модуле sched
мы используем метод run для выполнения всех задач, которые были запланированы для выполнения.
# Creating a method to print time def print_time(a="default"): print("From print_time", time.time(), a) # Method to print a few times pre-decided def print_some_times(): print("This is the current time : ", time.time()) # default command to print time s.enter(10, 1, print_time) # passing an argument to be printed after the time s.enter(10, 1, print_time, argument=('positional',)) # passing a keyword argument to print after the time s.enter(10, 1, print_time, kwargs={'a': 'keyword'}) # runs the scheduler object s.run() print("Time at which the program comes to an end: ", time.time()) # Output # This is the current time : 1609002547.484134 # From print_time 1609002557.4923606 default # From print_time 1609002557.4923606 positional # From print_time 1609002557.4923606 keyword # Time at which the program comes to an end : 1609002557.4923606
Следует обратить внимание на метод run
, который использовался с объектом планировщика. Это функция, которая запускает все запланированные события, а также будет ждать в зависимости от времени, заданного параметром delay func .
Это гораздо больше углубляется в концепцию параллелизма и многопоточности , с концепциями start , run , wait и notify , и это довольно забавное чтение , если вам интересно.
Наряду с этим, вы, возможно, заметили несколько аргументов, которые были добавлены, чтобы продемонстрировать различие между операторами печати.
1.3 Дополнительные функции
Существует еще несколько функций, которые мы не обязательно рассматривали в этом примере, состоящих из функций cancel , empty и queue .
- Функция cancel используется для удаления специально предоставленного события из очереди.
- Функция empty используется для возврата логического ответа о состоянии очереди и о том, является ли она пустой.
- Функция queue предоставляет нам список доступных/предстоящих событий в том порядке, в котором они будут выполняться. Каждое событие именованный кортеж , состоящий из сведений о событии.
Вывод
Как вы можете видеть, дверные проемы, которые этот стандартный модуль предоставляет Python, довольно откровенны и потенциально могут помочь вам работать над гораздо большим количеством хороших функций в качестве дополнения или рамки для вашего кода!
Если вы хотите работать с этим модулем в будущем, не стесняйтесь открывать эту статью в качестве ссылки во время работы над кодом.
Просмотр документации может быть сложной задачей, и именно поэтому мы постарались помочь вам ориентироваться в них с помощью удобных для пользователя статей.
Ознакомьтесь с другими нашими статьями о различных модулях, которые мы рассмотрели , datetime , dateutil , psutil и наш самый любимый инструмент для обработки данных – pandas !
Рекомендации
- Официальная документация sched
- Резьба в Python
- Питон и Время