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