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

Работа с модулем psutil в Python

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

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

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

Конечно, это не очень хорошо выглядит в глазах энтузиастов Don’t Repeat Yourself.

Учитывая это, вам потребуется создать скрипт, который будет проходить через системные процессы и предоставлять отчет при запуске скрипта.

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

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

Давайте начнем работать с ним!

Установка модуля psutil

Процедура установки psutil с помощью системы pip довольно проста.

pip install psutil

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

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

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

Модуль psutil содержит множество методов, которые можно разделить на несколько разделов: система, процессы, службы windows и константы. Существуют также независимые методы, которые можно отнести к категории miscellaneous.

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

1. Информация о системе

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

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

# Importing the module before utilization
import psutil

# Retrieving information regarding the CPU
## Returns the system CPU times as a named tuple
print(psutil.cpu_times())

## Returns the system-wide CPU utilization as a percentage
print(psutil.cpu_percent())

## Returns the number of logical CPUs in the system
print(psutil.cpu_count())

## Returns the various CPU statistics as a tuple
print(psutil.cpu_stats())

## Returns the CPU frequency as a nameduple
print(psutil.cpu_freq())

Когда эти функции выводятся на консоль, мы получаем журнал следующего вида:

scputimes(user=242962.0, system=84860.32812499994, idle=432883.46875, interrupt=5186.125, dpc=4331.65625)
0.0
4
scpustats(ctx_switches=2378452881, interrupts=1779121851, soft_interrupts=0, syscalls=3840585413)
scpufreq(current=2000.0, min=0.0, max=2601.0)

Мы составили gist для простого обзора использования модуля psutil, если вы захотите его изучить.

Существует множество других функций, входящих в состав модуля, которые можно найти в официальной документации.

2. Процессы

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

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

Используя функциональность модуля для работы с процессами, мы можем получить информацию о некоторых процессах простым способом:

# Importing the module before utilization
import psutil

# Returning a sorted list of currently running processes
print(psutil.pids())

# Returns an iterator which prevents the race condition for process stats
print(psutil.process_iter())

# Used to check whether a certain process exists in the current process list
print(psutil.pid_exists(0))

# An example to terminate and wait for the children
def on_terminate(proc):
    print("process {} terminated with exit code {}".format(proc, proc.returncode))

procs = psutil.Process().children()
for p in procs:
    p.terminate()
gone, alive = psutil.wait_procs(procs, timeout=3, callback=on_terminate)
for p in alive:
    p.kill()

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

3. Службы Windows

Модуль psutil предоставляет нам функциональность для проверки всех установленных служб Windows.

Класс WindowsService – это класс, который представляет каждую службу Windows по ее имени, а подробная информация о службе в основном извлекается с помощью функций win_service_iter() и win_service_get().

# Importing the module before utilization
import psutil

# Returns an iterator yielding a WindowsService class instance
print(psutil.win_service_iter())
# To provide the list of all processes contained we can use the list() function
print(list(psutil.win_service_iter()))

# Gets a Windows service by name, returning a WindowsService instance
print(psutil.win_service_get('WpnUserService_6b5d2'))

Способ работы со службами Windows подробно описан в официальной документации psutil, если вы захотите подробнее ознакомиться с функциями.

4. Системные константы

Модуль psutil позволяет проверять системные константы, выдавая булев ответ, применима ли данная константа в используемой вами операционной системе.

Для того чтобы объяснить это, мы можем проверить это с помощью Python,

# Importing the module
import psutil

# Checking whether the operating system is Linux based
print(psutil.LINUX)

# Windows based OS?
print(psutil.WINDOWS)

В моем случае операционная система была на базе Windows, и поэтому ответ был False для LINUX и True для Windows.

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

Заключение

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

Ознакомьтесь с другими нашими статьями о различных модулях, которые вы можете использовать в Python для облегчения своей жизни – DataFrames, разбор XML, сжатие файлов.

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

Оригинал: “https://www.askpython.com/python-modules/psutil-module”