Получение информации о CPU и RAM в Python: кросс-платформенно
Быстрый ответ
Чтобы контролировать загрузку процессора и использование оперативной памяти в Python, примените библиотеку psutil
:
import psutil
print(f"Загрузка CPU: {psutil.cpu_percent()}%")
print(f"Использование RAM: {psutil.virtual_memory().percent}%")
Для установки библиотеки используйте команду: pip install psutil
. После запуска данного кода вы увидите актуальные показания.
Детализированный анализ с использованием psutil
Библиотека psutil
предлагает широкие возможности для контроля производительности системы.
Отслеживание загрузки процессора по отдельным ядрам
Библиотека psutil
может контролировать загрузку каждого из ядер процессора независимо:
# Общая загрузка CPU
print(f"Общая загрузка CPU: {psutil.cpu_percent()}%")
# Мониторинг загрузки каждого ядра CPU
for i, percentage in enumerate(psutil.cpu_percent(percpu=True)):
print(f"Ядро {i}: {percentage}%")
Мониторинг в реальном времени с визуализацией прогресса
Для наглядного мониторинга системы в реальном времени можно использовать библиотеку tqdm
вместе с psutil
:
from tqdm import tqdm
import time
for _ in tqdm(range(100), desc="Мониторим CPU и RAM... как настоящий профи"):
print(f"Загрузка CPU: {psutil.cpu_percent()}%")
print(f"Использование RAM: {psutil.virtual_memory().percent}%")
time.sleep(1)
Эффективное использование модуля multiprocessing
Для выполнения сложных вычислительных задач можно использовать модуль multiprocessing
, оставив не более одного ядра для мониторинга:
import multiprocessing
import psutil
def ninja_monitor():
print(f"Загрузка CPU: {psutil.cpu_percent()}%")
print(f"Использование RAM: {psutil.virtual_memory().percent}%")
if __name__ == '__main__':
ninja_process = multiprocessing.Process(target=ninja_monitor)
ninja_process.start()
ninja_process.join()
Отслеживание потребления памяти Python-процессом
Библиотека psutil
позволяет также отслеживать потребление памяти самим Python-процессом:
python_process = psutil.Process()
print(f"RAM, используемая Python-процессом: {python_process.memory_info()[0] / 2.**30:.2f} GB")
Визуализация
Рассмотрим аналогию вашего компьютера с рестораном, где ЦПУ – это шеф-повар, а ОЗУ – это холодильник:
Сценарий в ресторане | Функция Python
--------------------- | ----------------
Работа шеф-повара | `psutil.cpu_percent()`
Запасы в холодильнике | `psutil.virtual_memory()`
Образно говоря:
👨🍳 = CPU: Насколько занят шеф-повар? **75%** 🏃♂️💨
🥩🥕🍟 = RAM: На сколько заполнен холодильник? **60%** 📦↗️
Таким образом, можно оценить, насколько "занят" ваш "ресторан" и каков уровень его "запасов".
Работа в разнообразных средах
psutil
и tqdm
прекрасно подходят для работы в различных средах, включая Jupyter notebook, позволяя вносить мониторинг в привычный рабочий процесс:
from IPython.display import display, HTML
import psutil
import threading
import time
def flashy_status():
while True:
cpu_usage = psutil.cpu_percent()
ram_usage = psutil.virtual_memory().percent
display(HTML(f"<div>CPU: {cpu_usage}% RAM: {ram_usage}%</div>"))
time.sleep(0.5)
threading.Thread(target=flashy_status).start()
Совместимость версий и платформ
psutil
– это кроссплатформенная библиотека, поддерживающая Python версий от 2.6 до 3.5.
Возможные проблемы и способы их решения
В процессе работы с psutil
могут возникнуть некоторые сложности:
Ошибки в расчете использования памяти
Время от времени показатели использования памяти могут быть завышены. В этом случае рекомендуется сравнить их с данными других системных инструментов.
Получение детальной информации
Для получения наиболее точной и подробной информации о работе системы, обязательно ознакомьтесь с официальной документацией psutil
.
Полезные материалы
- Документация
psutil
— детальное описание мониторинга ЦПУ и памяти в Python. - Определение текущей загрузки ЦПУ и ОЗУ в Python на Stack Overflow — полезное обсуждение с примерами кода.
- Документация модуля
os
— представляет информацию о взаимодействии с операционной системой. - Документация модуля
multiprocessing
— инструкции по использованию параллельности в Python. - Профилировщик памяти на PyPI — инструмент предназначен для профилирования памяти.
- Документация модуля
resource
— приспособление для отслеживания использования ресурсов. - Glances на GitHub — многофункциональный инструмент для мониторинга системы на Python.