Как установить psutil на python windows
Обновлено: 04.07.2024
psutil - это кроссплатформенная библиотека, которая может легко получать информацию о процессах и использовании системы (процессор, память, диск, сеть и т. д.), которые работает система. В основном используется для мониторинга, анализа и управления системными ресурсами и процессами.
Установка psutil
Установка на базе Centos7
Установите зависимые пакеты, такие как gcc
yum install gcc python-devel
Разархивируйте и установите psutil
tar zxfv psutil-2.1.3.tar.gz
python setup.py install
Следующая картинка появляется с import psutil, доказывая, что установка psutil завершена
Получить информацию о производительности системы
Основные характеристики сбора системной информации включают процессор, память, диск, сеть и т. Д., Которые могут полностью описать текущее рабочее состояние и качество системы.
Информация о процессоре
Сбор информации о памяти
Информация об использовании памяти системой включает в себя общее (используемая память), использованное (используемая память), свободное (свободная память), буферы (использование буфера), кэш (использование кэша), своп (использование раздела подкачки и т. Д.) ). Используйте psutil.virtual_memory (), psutil.swap_memory и т. Д. Соответственно.
Информация о диске
В информации о диске системы мы больше заботимся об использовании диска и информации о IO. (io: входная и выходная информация)
Как показано ниже, получите полную информацию о диске:
Как показано ниже, получите использование параметров раздела:
Как показано ниже: Получите общее количество операций ввода-вывода жесткого диска, прочитайте и запишите информацию:
Как показано ниже, получите информацию о IO, прочитайте и запишите информацию об одном диске
Сетевая информация
Сетевая информация системы в основном включает bytes_sent (количество отправленных байтов), bytes_rew = 28220119 (количество полученных байтов), packet_sent (количество отправленных пакетов),
Как показано ниже, просмотрите общий объем информации о сети, по умолчанию pernic = False
Как показано ниже, выведите информацию о IO каждого сетевого интерфейса.
Другая системная информация
Он также поддерживает получение имени пользователя, загрузку, время и другую информацию.
Как показано на рисунке ниже, верните информацию о пользователях, которые в данный момент вошли в систему.
Как показано ниже, получите время загрузки и верните его в формате отметки времени Linux
Управление процессами системы
Получение информации о процессе текущей системы позволяет персоналу по эксплуатации и техническому обслуживанию знать состояние работы приложения, включая время запуска системного процесса, просмотр или настройку привязки к процессору, использование памяти, информацию ввода-вывода, подключение к сокету, номер потока и т. Д.
Информация о процессе
Конкретные примеры следующие:
Используйте psutil.pids (), чтобы получить все номера процессов текущей системы.
Используйте следующую команду, чтобы просмотреть имя службы, соответствующее конкретному процессу
На этой неделе я столкнулся с интересным проектом на Python под названием psutil на Google Code. Он работает на Linux, Windows, OSX и FreeBSD. Что он делает? Он собирает все работающие процессы и выдаёт Вам информацию о них, предоставляя так же возможность их завершения. Неплохо, подумал я, сделать для него GUI и получить собственный диспетчер задач / монитор приложений на wxPython. Если у Вас есть время - я приглашаю Вас в путешествие по 4 итерациям моего кода.
Прототип
Моя первая версия всего лишь показывает что именно запущенно на данный момент и использует wx.Timer для обновления информации каждые пять секунд. Я использовал виджет ObjectListView для отображения данных, который на данный момент не включён в wxPython, так что Вам необходимо его установить, если Вы хотите запустить мой код .
Тут всё понятно и без моих объяснений. Но вот получение списка процессов каждые пять секунд приостанавливает работу GUI, что несколько нервирует. Поэтому давайте добавим сюда нити, для выполнения этого в фоне.
Добавление нитей (Threading) - Alpha 2
В этой версии мы добавили нити и pubsub для облегчения передачи информации из нити в GUI. Обратите внимание, что мы так же должны использовать wx.CallAfter для вызова pubsub, так как pubsub не thread-safe.
Кроме того, мы увеличили интервал обновления до 15. Я сделал это, потому что иначе информация обновлялась слишком быстро и я не успевал хорошо рассмотреть список до того, как он обновлялся. На этом месте я заметил, что я не могу изменить размер колонок один раз и до конца, так как он каждый раз возвращался к исходному размеру после обновления. Кроме того, мне захотелось, чтобы приложение следило за тем, как я отсортировал колонки и какой процесс был выбран последним. И, наконец, мне нужна возможность убивать процессы (xD - прим. пер.)
Шаг 3: Добавляем базовую функциональность
Итак, на нашей третьей итерации мы добавили все эти возможности:
Вы можете заметить что мы перехватываем несколько событий для того, чтобы отслеживать сортировку по колонкам и выделение процесса. Я пока не придумал, как выяснить направление сортировки или как его изменить, так что это остаётся в моём TODO. И всё же, есть ещё одна вещь, которую я хотел бы добавить - панель статуса с информацией о количестве процессов, загрузке CPU и использованию памяти.
Итог: PyProcMon
Для нашей итоговой версии (по крайней мере, на данный момент), мы добавили панель статуса, разделённую на три части, и ещё один получатель / отправитель pubsub. Кроме того, мы выделили некоторые куски программы в отдельные модули. Код потока выделен в controller.py, класс Process в model.py. Начнём с контроллера:
Очень просто! Обратите внимание, что нам не нужно ничего импортировать в этот модуль. Теперь посмотрим на основной код:
Главное, что сюда добавлено - это панель статуса и механизм её обновления. Пришлось с ней повозиться, но в итоге она обновляется вместе с экраном.
Итоги
Вы может быть думаете, почему информация о процессах собирается в выражении try/except. Ну, некоторые процессы не особо хотят делиться своей информацией или могут попытаться пропасть между тем, как я получаю список процессов и тем, как я получаю о нём информацию, так что лучше перестраховаться. На самом деле, таких процессов МНОГО. Кроме того, я так же обернул попытку убить процесс обработчиком исключений, так как не все процессы могут быть убиты. А так, всё работает замечательно. Вот ещё несколько вещей, которые стоило бы добавить: контекстное меню в ответ на клик правой кнопкой мыши, диалог подтверждения, меню с некоторыми опциями (закрыть, запустить, о программе).
Я надеюсь, Вы получили удовольствие в процессе нашего путешествия и узнали что-то новое. Happy hacking!
Эта библиотека пригодится вам, если вы захотите получить какие-либо данные о конкретном процессе или комплектующих. Также появится возможность управлять ими в зависимости от их состояния.
Какую же информацию можно получить? Можно достать данные о процессоре с момента загрузки, в том числе о том, сколько системных вызовов и контекстных переключателей он сделал:
Также есть возможность извлечь информацию о диске и состоянии памяти:
Можно даже получить данные о времени автономной работы или узнать текущую температуру процессора:
Одной из самых классных фишек этой библиотеки является то, что можно получить доступ к процессам и их статистике. Однако есть процессы, которые требуют наличия прав администратора. В противном случае после попытки доступа произойдет сбой с ошибкой "AccessDenied". Давайте протестируем эту функцию.
Сначала создадим экземпляр, предоставляя требуемый идентификатор процесса:
Затем можно получить доступ ко всей информации и статистике процесса:
Создадим функцию, которая связывает открытые порты соединений с процессами. Для начала нужно перебрать все открытые соединения.
Обратим внимание на то, что одним из возвращаемых атрибутов является "pid".
Можно связать это с именем процесса:
Но не стоит забывать, что если пользователь не обладает правами администратора, он не сможет получить доступ к определенным процессам. Проверим выходные данные. Он вернет много данных, поэтому выведем только первое значение:
Как можно увидеть, первое значение – это имя процесса, второй – данные соединения: IP-адрес, порт, статус и так далее. Данная функция очень полезна для понимания того, какие порты используются конкретными процессами.
Psutil – отличная библиотека, предназначенная для управления системой. Она полезна для управления ресурсами как частью потока кода.
Прежде чем что-то устанавливать, давайте разберёмся, что такое пакет, чем он отличается от модуля, и как с ним работать. У слова «пакет» применительно к Python два значения.
C одной стороны, пакеты Python — это Py-приложения, дополнения или утилиты, которые можно установить из внешнего репозитория: Github, Bitbucket, Google Code или официального Python Package Index . На сервере пакеты хранятся в .zip и .tar архивах, либо в дополнительной упаковке — «яйцах» (.egg, старый формат) или «колесах» (.whl). В составе пакета, как правило, есть сценарий установки setup.py, который хранит сведения о зависимостях — других пакетах и модулях, без которых пакет работать не будет.
С другой стороны, если речь об архитектуре Python-приложения, пакет — это каталог, внутри которого файл __init__.py и, опционально, другие каталоги и файлы .py . Так большую Python-программу разбивают на пакеты и модули. Модуль — файл с исходным кодом, который можно использовать в других приложениях: как «заготовку» для будущих проектов или как часть библиотеки/фреймворка. Но к теме статьи это прямого отношения не имеет, поэтому дальше мы будем говорить только о пакетах из репозиториев.
Чтобы за секунды устанавливать пакеты со всеми зависимостями, используют менеджер пакетов pip или модуль easy_install . В большинстве случаев рекомендуется использовать pip. И только если у вас есть инфраструктура на пакетах .egg, которые pip не открывает, нужен easy_install.
Установка PIP для Python 3 и 2
Если вы используете виртуальные окружения на базе venv или virtualenv, pip уже установлен. Начиная с Python 3.4 (для Python 2 — с версии 2.7.9) pip поставляется вместе с интерпретатором. Для более ранних версий устанавливать менеджер пакетов нужно вручную. Вариантов два:
C помощью скрипта get_pip.py — быстро.
Через setuptools — кроме pip сможем использовать easy_install.
Вариант 1. Скачиваем скрипт get_pip.py и запускаем в консоли. Для этого открываем терминал через Win+R>"cmd">OK и пишем:
Остальное установщик сделает сам: если нужно, попутно установит wheel (для распаковки .whl-колес) и setuptools. Чтобы запретить инсталляцию дополнительных инструментов, можно добавить в строку ключи --no-setuptools и/или --no-wheels.
Если возникает ошибка, путь к Python не прописан в переменной среды $PATH. Нужно либо найти эту переменную в системном реестре и задать её значение, либо каждый раз указывать полный путь до python.exe, а за ним уже имя исполняемого Py-файла:
Полный путь полезен и в том случае, если у вас на компьютере несколько версий Python и вы ставите пакет для одной из них.
Вариант 2. Скачиваем архив с setuptools из PYPI и распаковываем в отдельный каталог. В терминале переходим в директорию setuptools c файлом setup.py и пишем:
python setup.py install
Обновить pip для Python в Windows можно так:
python pip install -U pip
Если это не работает, нужно добавить путь к папке с pip в $PATH.
Установка пакета в pip
Пора запустить pip в Python и начать устанавливать пакеты короткой командой из консоли:
pip install имя_пакета
При установке в Windows, перед pip нужно добавить "python -m".
Обновить пакет не сложнее:
pip install имя_пакета -U
Если у вас последняя версия пакета, но вы хотите принудительно переустановить его:
pip install --force-reinstall
Посмотреть список установленных пакетов Python можно с помощью команды:
Найти конкретный пакет по имени можно командой "pip search". О других командах можно прочесть в справке, которая выдается по команде "pip help".
Удаление пакета Python
Когда пакет больше не нужен, пишем:
pip uninstall имя_пакета
Как установить пакеты в Python без pip
Формат .egg сейчас используют не часто, поэтому pip его не поддерживает. Модуль easy_install умеет устанавливать как .egg, так и обычные пакеты, но есть у него важные минусы:
он не удаляет пакеты,
он может пытаться установить недозагруженный пакет.
Использовать easy_install можно сразу после установки setuptools. Хранится модуль в папке Scripts вашего интерпретатора. Если у вас в $PATH верно прописан путь, ставить пакеты из PYPI можно короткой командой:
Для обновления после install и перед именем пакета нужно ставить ключ -U. Откатиться до нужной версии можно так:
Если нужно скачать пакет из альтернативного источника, вы можете задать URL или локальный адрес на компьютере:
Чтобы узнать об опциях easy_install, запустим его с ключом -h:
Список пакетов, установленных через easy_install, хранится в файле easy-install.pth в директории /libs/site-packages/ вашего Python.
К счастью, удалять установленные через easy_install пакеты можно с помощью pip. Если же его нет, потребуется удалить пакет вручную и стереть сведения о нем из easy-install.pth.
Теперь вы умеете ставить и удалять пакеты для вашей версии Python.
Кстати, для тех, кто изучает Python, мы подготовили список полезных и практичных советов.
Читайте также: