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-12-13 04:55:31.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()
C | |
C++ | |
Go | |
Groovy | |
Java | |
JavaScript | |
PHP | |
Python | |
Ruby | |
.NET/C# | |
Thrift | |
Теория Программирования |