psutil

Содержание
Введение
Установка
Простой пример
CPU
Процессы
Похожие статьи

Введение

Psutil - это кросс-платформенная библиотека Python, используемая для доступа к системным деталям и утилитам процессов.

Она используется для отслеживания использования различных ресурсов в системе.

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

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

Она поддерживается в версиях Python 2.6, 2.7 и 3.4+.

Установка

Обычно достаточно выполнить

pip install psutil

А лучше (*)

python3 -m pip install psutil

Перед этим, конечно, нужно установить Python и Pip

Простой пример

В Linux можно получить кое-что и без psutil

import platform print(platform.processor())

x86_64

CPU

Чтобы собрать информацию о CPU нужно подключить psutil

import psutil print(psutil.cpu_times())

x86_64
scputimes(user=11137.09, nice=1105.78, system=3347.08, idle=164460.53, iowait=135.55, irq=0.0, softirq=46.12, steal=0.0, guest=0.0, guest_nice=0.0)

Пример скрипта, который записывает время, CPU и RAM в файл log.txt

import psutil import datetime dt_now = str(datetime.datetime.now()) cpu = str(psutil.cpu_percent(interval=0.2)) ram = str((psutil.virtual_memory().available * 100 / psutil.virtual_memory().total)) with open('log.txt', 'a') as f: f.write(dt_now + ";" + cpu + ";" + ram + "\n")

python cpu_ram.py
cat log.txt

2026-03-16 23:51:04.731940;3.5;41.20258824906598

Процессы

Изучить список процессов

Чтобы изучить запущенные процессы нужно использовать process_iter()

Рассмотрим скрипт process_demo.py , который выводит на экран идентификатор процесса, его название и пользователя.

import psutil for proc in psutil.process_iter(['pid', 'name', 'username']): print(proc.info)

Выполним скрипт в Windows

python process_demo.py

… {'username': None, 'pid': 37536, 'name': 'OneDrive.exe'} {'username': 'AzureAD\Andrei', 'pid': 37556, 'name': 'firefox.exe'} {'username': 'AzureAD\Andrei', 'pid': 37588, 'name': 'Teams.exe'} {'username': 'AzureAD\Andrei', 'pid': 37624, 'name': 'firefox.exe'} {'username': None, 'pid': 37816, 'name': 'EPDCtrl.exe'} {'username': 'AzureAD\Andrei', 'pid': 37844, 'name': 'chrome.exe'} …

Точное название процесса

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

import psutil for proc in psutil.process_iter(['pid', 'name', 'username']): if "TestComplete" in str(proc.name()): print(proc.info)

python process_demo.py

{'username': None, 'name': 'TestCompleteService15.exe', 'pid': 7720} {'username': 'AzureAD\Andrei', 'name': 'TestComplete.exe', 'pid': 26808}

Этот приём хорош если нужно найти процесс точного названия которого вы не знаете.

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

import psutil for proc in psutil.process_iter(['pid', 'name', 'username']): if "aint" in str(proc.name()): print(proc.info)

python process_demo.py

{'name': 'SolarWinds.MSP.Ecosystem.WindowsAgentMaint.exe', 'username': None, 'pid': 7564} {'name': 'AgentMaint.exe', 'username': None, 'pid': 10196} {'name': 'mspaint.exe', 'username': 'AzureAD\Andrei', 'pid': 29160}

Теперь очевидно, что Paint называется mspaint.exe

Найти pid процесса по имени

import psutil for proc in psutil.process_iter(['pid', 'name']): if proc.info["name"] == "mspaint.exe": print(proc.pid)

python process_demo.py

29160

Завершить процесс по pid

Если известен pid процесса, например 1234, его можно завершить с помощью метода terminate()

import psutil p = psutil.Process(1234) p.terminate()

Завершить процесс по имени

Если pid процесса ещё неизвестен, но известно имя, например mspaint.exe, можно найти pid и использовать его как в предыдущем примере.

import psutil for proc in psutil.process_iter(['pid', 'name']): if proc.info["name"] == "mspaint.exe": p = psutil.Process(proc.pid) p.terminate()

Похожие статьи
Python
Интерактивный режим
str: строки
\: перенос строки
Списки []
if, elif, else
Циклы
Функции
try except
Пакеты
*args **kwargs
ООП
enum
Опеределить тип переменной Python
Тестирование с помощью Python
Работа с REST API на Python
Файлы: записать, прочитать, дописать, контекстный менеджер…
Скачать файл по сети
SQLite3: работа с БД
datetime: Дата и время в Python
json.dumps
Selenium + Python
Сложности при работе с Python
DJANGO
Flask
Скрипт для ZPL принтера
socket :Python Sockets
Виртуальное окружение
subprocess: выполнение bash команд из Python
multiprocessing: несколько процессов одновременно
sys.argv: аргументы командной строки
PyCharm: IDE
pydantic: валидация данных
paramiko: SSH из Python
enumerate
logging: запись в лог
Обучение программированию на Python