Как получить текущее использование процессора и оперативной памяти в Python?
Как я могу получить текущее состояние системы (текущий процессор, оперативная память, свободное место на диске и т.д.) В Python? В идеале это работало бы как для платформ Unix, так и для Windows.
Кажется, есть несколько возможных способов извлечь это из моего поиска:
Используя библиотеку, такую как PSI (которая в настоящее время, похоже, не разрабатывается активно и не поддерживается на нескольких платформах) или что-то вроде pystatgrab (похоже, опять никакой активности с 2007 года и нет поддержки Windows).
Использование кода, зависящего от платформы, такого как использование a os.popen("ps") или аналогичного для систем * nix и MEMORYSTATUS в ctypes.windll.kernel32 (см. Этот рецепт на ActiveState) для платформы Windows. Можно было бы объединить класс Python со всеми этими фрагментами кода.
Дело не в том, что эти методы плохие, но есть ли уже хорошо поддерживаемый мультиплатформенный способ сделать то же самое?
Переведено автоматически
Ответ 1
Библиотека psutil предоставляет вам информацию о процессоре, оперативной памяти и т.д. На различных платформах:
psutil - это модуль, предоставляющий интерфейс для получения информации о запущенных процессах и загрузке системы (ЦП, памяти) переносимым способом с использованием Python, реализующий множество функциональных возможностей, предлагаемых такими инструментами, как ps, top и диспетчер задач Windows.
В настоящее время он поддерживает Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD и NetBSD, как 32-разрядные, так и 64-разрядные архитектуры, с версиями Python от 2.6 до 3.5 (пользователи Python 2.4 и 2.5 могут использовать версию 2.1.3).
Несколько примеров:
#!/usr/bin/env python import psutil # gives a single float value psutil.cpu_percent() # gives an object with many fields psutil.virtual_memory() # you can convert that object to a dictionary dict(psutil.virtual_memory()._asdict()) # you can have the percentage of used RAM psutil.virtual_memory().percent 79.2 # you can calculate percentage of available memory psutil.virtual_memory().available * 100 / psutil.virtual_memory().total 20.8
Вот другая документация, которая предоставляет больше концепций и интересных концепций:
Используйте библиотеку psutil. В Ubuntu 18.04 pip установил 5.5.0 (последнюю версию) по состоянию на 1-30-2019. Более старые версии могут вести себя несколько иначе. Вы можете проверить свою версию psutil, выполнив это в Python:
from __future__ import print_function # for Python2 import psutil print(psutil.__version__)
Чтобы получить некоторую статистику памяти и процессора:
В virtual_memory (кортеже) будет указан процент используемой памяти в масштабах всей системы. Мне показалось, что в Ubuntu 18.04 этот показатель завышен на несколько процентов.
Вы также можете получить память, используемую текущим экземпляром Python:
import os import psutil pid = os.getpid() python_process = psutil.Process(pid) memoryUse = python_process.memory_info()[0]/2.**30# memory use in GB...I think print('memory use:', memoryUse)
который показывает текущее использование памяти вашим скриптом Python.
Можно получить мониторинг ЦП и ОЗУ в режиме реального времени, комбинируя tqdm и psutil. Это может быть удобно при выполнении тяжелых вычислений / обработки.
Это также работает в Jupyter без каких-либо изменений кода:
from tqdm import tqdm from time import sleep import psutil
with tqdm(total=100, desc='cpu%', position=1) as cpubar, tqdm(total=100, desc='ram%', position=0) as rambar: whileTrue: rambar.n=psutil.virtual_memory().percent cpubar.n=psutil.cpu_percent() rambar.refresh() cpubar.refresh() sleep(0.5)
Удобно поместить эти индикаторы выполнения в отдельный процесс, используя многопроцессорную библиотеку.