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

2024-02-26 03:47:13.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
Интерактивный режим
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

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: