Давайте поговорим о модуле 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”