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-04-19 19:13:32.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
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Хотите поддержать сайт материально
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......