Рубрики
Без рубрики

Планирование в Python с помощью модуля sched

Давайте поговорим о модуле sched в Python. Работая с модулем datetime в Python, вы, должно быть, столкнулись с функцией, которую вы хотели бы иметь

Автор оригинала: 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 !

Рекомендации