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-10-13 17:49:55.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()

Article author: Andrei Olegovich

Похожие статьи
Python
Интерактивный режим
dict, list, str …
\: перенос строки
if, elif, else
Циклы
Функции
try except
Пакеты
ООП
Опеределить тип переменной Python
Работа с REST API на Python
Файлы: записать, прочитать…
Работа с базами данных
datetime: Дата и время в Python
json.dumps
Сложности при работе с Python
Фреймворки: Django, Flask
socket: Python Sockets
Виртуальное окружение
subprocess: bash команды из Python
multiprocessing: несколько процессов одновременно
sys.argv: аргументы командной строки
PyCharm: IDE
pydantic: валидация данных
paramiko: SSH из Python
logging: запись в лог
Обучение Python

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su, info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: