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

Модуль ресурсов в Python – Введение для начинающих

Прежде чем вы начнете работу с этой статьей, важно отметить, что модуль ресурсов является пакетом, специфичным для UNIX, и не будет работать в POSIX, т. е.

Автор оригинала: Pankaj Kumar.

Прежде чем приступить к работе с этой статьей, важно отметить, что ресурс модуль представляет собой пакет, специфичный для UNIX, и не будет работать в POSIX, т. Е. операционной системе Windows.

Введение в модуль ресурсов

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

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

Что ж, если заглянуть немного глубже в ход мыслей, то это отличная идея!

Автоматизация скрипта с помощью python-crontab , sched и модуля dateutil обеспечит автоматическое обновление журнала, запланированное на определенный интервал каждый день, поэтому вам не нужно вручную получать информацию в определенное время.

Но, прежде чем пытаться автоматизировать его, нам понадобится что-то, что может сначала предоставить вам эту информацию, и именно здесь в игру вступает модуль resource .

Модуль resource , используемый для предоставления базовой информации о системных ресурсах, а также для управления ими, – это именно то, что мы ищем.

Итак, давайте перейдем к делу и приступим к работе над модулем!

Использование модуля ресурсов в Python

Будучи частью стандартной библиотеки в Python, модуль resource не требует отдельной установки, и это означает, что работа с модулем на новом сервере или клиенте с установленным Python должна происходить автоматически без каких-либо проблем.

Однако сообщается, что некоторые версии python, похоже, сталкиваются с какими-либо проблемами с модулем ресурсов, и поэтому рекомендуется установить модуль ресурсов с помощью команды pip .

pip install python-resources

Теперь, когда мы закончили с этим, нам все еще нужно использовать его компоненты для получения необходимой информации, так что давайте приступим к импорту!

1.0 Настройка экосистемы

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

# Importing functions from the resource module
from resource import *
import time

Теперь, когда мы импортировали модули, мы можем начать получать информацию о системных ресурсах.

1.1 Использование базового параметра

Функциональность модуля в основном зависит от параметров, которые предоставляются функции, возвращающей необходимую информацию.

Вот несколько примеров этих параметров,

  • ресурс.RUSAGE_SELF – Ресурсы, потребляемые вызывающим процессом.
  • ресурс.RUSAGE_CHILDREN – Ресурсы, потребляемые дочерними процессами.
  • ресурс.RUSAGE_BOTH – Ресурсы, потребляемые текущими и дочерними процессами.
  • ресурс.RUSAGE_THREAD – Ресурсы, потребляемые текущим потоком.

Все эти символы USAGE_* передаются в функцию getrusage () , чтобы указать, для какого процесса была запрошена информация.

1.2 Демонстрация

# Function used to retrieve information regarding
## Resources consumed by the current process or it's children
### Non CPU bound task
time.sleep(3)

# Calling for the resources consumed by the current process.
print(getrusage(RUSAGE_SELF))

### CPU bound task
for i in range(10**8):
    _ = 1+1

# Calling for the resources consumed by the current process.
print(getrusage(RUSAGE_SELF))

# Output
# resource.struct_rusage(ru_utime=0.016, ru_stime=0.004, ru_maxrss=5216, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=732, ru_majflt=1, ru_nswap=0, ru_inblock=80, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=6, ru_nivcsw=9)

# resource.struct_rusage(ru_utime=14.176, ru_stime=0.02, ru_maxrss=5140, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=730, ru_majflt=0, ru_nswap=0, ru_inblock=0, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=1, ru_nivcsw=177)

Выходные данные, которые мы получаем, представлены в виде объекта класса ресурсов со всей необходимой информацией, запрашиваемой в структуре объекта.

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

Если вы хотите узнать больше о каждом из параметров или хотите изучить модуль в целом, вам может быть интересно посетить раздел getrusage() на странице документация .

1.3 Движение вперед

Работа с этим модулем должна была дать вам представление о ресурсах, которые могут быть получены модулем resource .

Расширение этого модуля и реализация его в скрипте означали бы мониторинг системных процессов и регулярную проверку потребления ресурсов.

В случае, если вы хотите работать с такой идеей, было бы разумно изучить различные другие модули , такие как psutil , sys и os модуль для работы с системными процессами.

Чтобы запланировать автоматические проверки, вы можете изучить работу с модулями dateutil , sched и python-crontab .

Вывод

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

Если вы хотите работать с системными процессами, тестированием и мониторингом, как упоминалось в предыдущем разделе, вам следует изучить статьи psutil , sys , os и модуль dateutil.

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