Узнать объем оперативной памяти python

Обновлено: 06.07.2024

Какой предпочитаемый способ получения текущего состояния системы (текущий процессор, оперативная память, свободное место на диске и т. Д.) В Python? Бонусные баллы для * nix и Windows платформ.

Кажется, есть несколько возможных способов извлечь это из моего поиска:

Использование библиотеки, такой как PSI (которая в настоящее время, кажется, не активно развивается и не поддерживается на нескольких платформах) или что-то вроде pystatgrab (опять же, с 2007 года, похоже, нет активности и нет поддержки Windows)

Использование специфического для платформы кода, например использование os.popen("ps") или аналогичный для систем * nix и MEMORYSTATUS в ctypes.windll.kernel32 (см. Этот рецепт на ActiveState ) для платформы Windows. Можно поместить класс Python вместе со всеми этими фрагментами кода.

Не то чтобы эти методы плохие, но уже есть хорошо поддерживаемый, многоплатформенный способ сделать то же самое?

Вы можете создать свою собственную многоплатформенную библиотеку, используя динамический импорт: «if sys.platform == 'win32': импортировать win_sysstatus как sysstatus; еще" . Было бы здорово иметь что-то, что работает и на App Engine. Значит ли возраст пакетов? Если кто-то понял их правильно в первый раз, почему они все равно не будут правы?

Библиотека 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).

Вот другая документация, которая предоставляет больше понятий и понятий интереса:

Работал для меня на OSX: $ pip install psutil ; >>> import psutil; psutil.cpu_percent() и >>> psutil.virtual_memory() который возвращает хороший объект VMEM: vmem(total=8589934592L, available=4073336832L, percent=52.6, used=5022085120L, free=3560255488L, active=2817949696L, inactive=513081344L, wired=1691054080L) @ user1054424 В python есть встроенная библиотека с именем resource . Тем не менее, кажется, что самое большее, что вы можете с этим сделать - это захват памяти, которую использует один процесс python и / или его дочерние процессы. Это также не кажется очень точным. Быстрый тест показал, что ресурс отключен примерно на 2 МБ из утилиты моего Mac. @ Джон Кейдж, привет Джон, могу я узнать у тебя разницу между свободной и доступной памятью? Я планирую использовать psutil.virtual_memory (), чтобы определить, сколько данных я могу загрузить в память для анализа. Спасибо за вашу помощь!

Используйте библиотеку psutil . На Ubuntu 18.04 pip установлен 5.5.0 (последняя версия) по состоянию на 1-30-2019. Старые версии могут вести себя несколько иначе. Вы можете проверить свою версию psutil, выполнив это в Python:

Чтобы получить статистику по памяти и процессору:

У virtual_memory (кортежа) будет процент памяти, используемой в масштабе всей системы. Это казалось мне завышенным на несколько процентов в Ubuntu 18.04.

Вы также можете получить память, используемую текущим экземпляром Python:

который дает текущее использование памяти вашего скрипта Python.

На странице pypi для psutil есть еще несколько подробных примеров .

Только для Linux: одна строка для использования ОЗУ с зависимостью только от stdlib:

редактировать: указанное решение ОС зависимости

Очень полезно! Для того, чтобы получить его непосредственно в считываемых единицах человека: os.popen('free -th').readlines()[-1].split()[1:] . Обратите внимание, что эта строка возвращает список строк.

У меня ниже коды, без внешних библиотек работали. Я тестировал на Python 2.7.9

Использование процессора

И использование плунжера, всего, б / у и бесплатно

Не думаете ли вы, grep и awk о них лучше позаботиться, обрабатывая строки в Python? Лично не знаком с awk, сделал нижеприведенную версию фрагмента использования процессора ниже. Очень удобно, спасибо! Нечестно говорить, что этот код не использует внешние библиотеки. На самом деле, они сильно зависят от доступности grep, awk и free. Это делает приведенный выше код непереносимым. ОП заявил «Бонусные баллы для * nix и Windows платформ».

Вот кое-что, что я собрал некоторое время назад, это только окна, но может помочь вам получить часть того, что вам нужно сделать.

ПРИМЕЧАНИЕ. Интерфейс / процесс WMI также доступен для выполнения аналогичных задач. Я не использую его здесь, поскольку текущий метод покрывает мои потребности, но если когда-нибудь потребуется его расширить или улучшить, то, возможно, захочется исследовать инструменты WMI как доступную. ,

Используйте GlobalMemoryStatusEx вместо GlobalMemoryStatus, потому что старый может возвращать неверные значения. Вы должны избегать from x import * заявлений! Они загромождают пространство основных имен и перезаписывают другие функции и переменные.

Мы решили использовать обычный источник информации для этого, потому что мы могли найти мгновенные колебания в свободной памяти и чувствовали, что запрос источника данных meminfo был полезен. Это также помогло нам получить еще несколько связанных параметров, которые были предварительно проанализированы.

Код

Вывод для справки (мы удалили все новые строки для дальнейшего анализа)

MemTotal: 1014500 кБ MemFree: 562680 кБ MemAvailable: 646364 кБ Буферы: 15144 кБ Кэшированные: 210720 КБ Свопы: 0 КБ Активные: 261476 КБ Неактивные: 128888 КБ Активные (анон): 167092 КБ Неактивные (анон): файл 20888 КБ Активные (файл) : 94384 КБ Неактивен (файл): 108000 КБ Неуязвим: 3652 КБ Блокировано: 3652 КБ Общий обмен: 0 КБ Свободный обмен: 0 КБ Грязный: 0 КБ Обратная запись: 0 КБ Количество страниц: 168160 КБ Отображено: 81352 КБ Shmem: 21060 КБ Плита: 34492 Объясняемое: 18044 кБ. SUВозвратное: 16448 кБ. Ядро: стек: 2672 кБ. Параметры таблицы: 8180 кБ. NFS_Unstable: 0 КБ. Отказов: 0 КБ. 0 КБ2048 КБ DirectMap4k: 43008 КБ DirectMap2M: 1005568 КБ

каков ваш предпочтительный способ получения текущего состояния системы (текущий процессор, оперативная память, свободное место на диске и т. д.) в Python? Бонусные баллы для платформ * nix и Windows.

кажется, есть несколько возможных способов извлечь это из моего поиска:

использование библиотеки, такой как PSI (который в настоящее время, кажется, не активно развивается и не поддерживается на нескольких платформах) или что-то вроде pystatgrab (опять никакой активности с тех пор 2007 кажется и нет поддержки Windows).

использование специфичного для платформы кода, например, с помощью os.popen("ps") или аналогичный для систем *nix и MEMORYSTATUS in ctypes.windll.kernel32 (см. этот рецепт на ActiveState) для платформы Windows. Можно было бы поместить класс Python вместе со всеми этими фрагментами кода.

это не то, что эти методы плохи, но есть ли уже хорошо поддерживаемый, многоплатформенный способ сделать то же самое?

библиотека psutil даст вам некоторую системную информацию (использование процессора / памяти) на различных платформах:

psutil-это модуль, предоставляющий интерфейс для извлечения информации о запущенных процессах и использовании системы (CPU, память) портативным способом с помощью Python, реализующий многие функции, предлагаемые такими инструментами, как ps, top и Windows task manager.

в настоящее время он поддерживает Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD и NetBSD, как 32-разрядные, так и 64-разрядные архитектуры, с версиями Python от 2.6 до 3.5 (пользователи Python 2.4 и 2.5 могут использовать версию 2.1.3).

использовать библиотека psutil. Для меня на Ubuntu, pip установлен 0.4.3. Вы можете проверить свою версию psutil, сделав это в Python:

чтобы получить некоторые характеристики памяти и процессора:

мне тоже нравится это делать:

что дает текущее использование памяти вашего скрипта Python.

есть еще несколько подробных примеров на pypi страница для 4.3.0 и 0.5.0.

для Ubuntu 16 и 14, установка из pip дала мне версию 4.3.0, которая не имеет метода phymem_usage (). Чтобы получить 0.5.0, вы можете сделать pip install psutil==0.5.0 или скачать tar.файл GZ, то ли

ниже кодов, без внешних библиотек работал для меня. Я тестировал на Python 2.7.9

загрузка ЦП

один лайнер для использования ОЗУ только с зависимостью stdlib:

". текущее состояние системы (текущий процессор, оперативная память, свободное место на диске и т. д.) "И" *Nix и платформы Windows " могут быть трудной комбинацией для достижения.

операционные системы принципиально отличаются тем, как они управляют этими ресурсами. Действительно, они различаются по основным понятиям, таким как определение того, что считается системой и что считается временем приложения.

"свободное место на диске"? Что считается " дисковое пространство?"Все разделы всех устройств? А как же иностранцы разделы в среде с несколькими загрузками?

Я не думаю, что есть достаточно ясный консенсус между Windows и *nix, что делает это возможным. Действительно, может даже не быть никакого консенсуса между различными операционными системами, называемыми Windows. Есть ли один API Windows, который работает как для XP, так и для Vista?

Я чувствую, что эти ответы были написаны для Python 2, и в любом случае никто не упоминал о стандарте resource пакет, который доступен для Python 3. Он предоставляет команды для получения ресурса ограничения данного процесса (вызывающий процесс Python по умолчанию). Это не то же самое, что получить текущий использование ресурсов системой в целом, но она может решить некоторые из тех же проблем, например: "я хочу убедиться, что я только используйте X много ОЗУ с этим скриптом."

мы решили использовать обычный источник информации для этого, потому что мы могли бы найти мгновенные колебания в свободной памяти и чувствовал запрос meminfo источник данных был полезным. Это также помогло нам получить несколько связанных параметров, которые были предварительно разобраны.

код

вывод Для справки (мы убрали все новые строки для дальнейшего анализа)

MemTotal: 1014500 kB MemFree: 562680 kB MemAvailable: 646364 КБ Буферы: 15144 КБ кэшированный: 210720 КБ SwapCached: 0 КБ активный: 261476 КБ Неактивный: 128888 КБ активный (Анон): 167092 КБ неактивный (Анон): 20888 КБ Активный(файл): 94384 КБ не активен(файл): 108000 КБ удаления и недоступные для удаления: 3652 КБ Mlocked: 3652 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB обратная запись: 0 kB AnonPages: 168160 kB отображено: 81352 kB Shmem: 21060 kB плита: 34492 kB SReclaimable: 18044 kB SUnreclaim: 16448 kB KernelStack: 2672 kB PageTables: 8180 kB NFS_Unstable: 0 kB Отказов: 0 КБ WritebackTmp: 0 КБ Committlimit: 507248 kB Committed_AS: 1038756 kB VmallocTotal: 34359738367 КБ VmallocUsed: 0 КБ VmallocChunk: 0 КБ HardwareCorrupted: 0 kB AnonHugePages: 88064 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 43008 kB DirectMap2M: 1005568 kB

этот скрипт для использования ЦП:

Я не верю, что существует хорошо поддерживаемая мультиплатформенная библиотека. Помните, что сам Python написан на C, поэтому любая библиотека просто собирается принять разумное решение о том, какой фрагмент кода для конкретной ОС будет запущен, как вы предлагали выше.

Каков ваш предпочтительный способ получения текущего состояния системы (текущий процессор, оперативная память, свободное место на диске и т.д.) в Python? Бонусные очки для платформ * nix и Windows.

Кажется, есть несколько возможных способов извлечения этого из моего поиска:

Использование библиотеки, такой как PSI (которая в настоящее время не активно развивается и не поддерживается на нескольких платформах) или что-то вроде pystatgrab (снова нет активности с 2007 года и нет поддержки для Windows).

Использование специфичного для платформы кода, такого как использование os.popen("ps") или аналогичного для систем * nix и MEMORYSTATUS в ctypes.windll.kernel32 (см. этот рецепт на ActiveState) для платформы Windows. Можно соединить класс Python со всеми этими фрагментами кода.

Не так ли, что эти методы плохи, но есть ли уже поддерживаемый многоплатформенный способ сделать то же самое?

Библиотека 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).

ОБНОВЛЕНИЕ: Вот несколько примеров использования psutil :

Используйте библиотеку psutil. На Ubuntu 18.04 pip установлен 5.5.0 (последняя версия) по состоянию на 1-30-2019. Старые версии могут вести себя несколько иначе. Вы можете проверить свою версию psutil, выполнив это в Python:

Чтобы получить статистику по памяти и процессору:

virtual_memory (кортеж) будет иметь процент памяти, используемой в масштабе всей системы. Это казалось мне завышенным на несколько процентов в Ubuntu 18.04.

Вы также можете получить память, используемую текущим экземпляром Python:

который дает текущее использование памяти вашего скрипта Python.

На странице pypi для psutil есть еще несколько подробных примеров.

Только для Linux: одна строка для использования ОЗУ только с зависимостью stdlib:

редактировать: указанное решение ОС зависимости

Ниже кодов без внешних библиотек работали для меня. Я тестировал на Python 2.7.9

Использование ЦП

Здесь кое-что, что я собрал некоторое время назад, это только окна, но может помочь вам получить часть того, что вам нужно.

ПРИМЕЧАНИЕ. Интерфейс/процесс WMI также доступен для выполнения аналогичных задач Я не использую его здесь, потому что текущий метод покрывает мои потребности, но если когда-нибудь ему понадобится расширить или улучшить это, тогда вам может понадобиться изучить инструменты WMI, доступные для доступа.

". текущий статус системы (текущий процессор, оперативная память, свободное место на диске и т.д.). И" * nix и платформы Windows "могут быть сложной комбинацией для достижения.

Операционные системы принципиально различаются в том, как они управляют этими ресурсами. Действительно, они отличаются в основных понятиях, таких как определение того, что считается системой, и что считается временем приложения.

"Свободное дисковое пространство"? Что считается "дисковым пространством"? Все разделы всех устройств? Что касается внешних разделов в многозадачной среде?

Я не думаю, что существует достаточно четкое согласие между Windows и * nix, что делает это возможным. В самом деле, между различными операционными системами под Windows не может быть никакого консенсуса. Существует ли один Windows API, который работает как для XP, так и для Vista?

Я чувствую, что эти ответы были написаны для Python 2, и в любом случае никто не упомянул стандартный пакет resource , доступный для Python 3. Он предоставляет команды для получения ограничений ресурсов для данного процесса (по умолчанию процесс Python-вызова). Это не то же самое, что получать текущее использование ресурсов системой в целом, но оно может решить некоторые из таких же проблем, как например: "Я хочу, чтобы я использовал только X много RAM с этим скриптом".

Мы решили использовать обычный источник информации для этого, потому что мы могли найти мгновенные колебания в свободной памяти и чувствовали, что запрос источника данных meminfo был полезен. Это также помогло нам получить еще несколько связанных параметров, которые были предварительно проанализированы.

Код

Вывод для справки (мы убрали все новые строки для дальнейшего анализа)

MemTotal: 1014500 кБ MemFree: 562680 кБ MemAvailable: 646364 кБ Буферы: 15144 кБ Кэшированные: 210720 КБ Свопы: 0 КБ Активные: 261476 КБ Неактивные: 128888 КБ Активные (анон): 167092 КБ Неактивные (анон): файл 20888 КБ Активные (файл): 94384 КБ Неактивно (файл): 108000 КБ Неизвестно: 3652 КБ Блокировано: 3652 КБ Общий объем обмена: 0 КБ Свободный обмен: 0 КБ Грязный: 0 КБ Обратная запись: 0 КБ Количество страниц: 168160 КБ Отображено: 81352 КБ Shmem: 21060 КБ Плита: 34492 SRExlaimable: 18044 кБ 0 кБ AnonHugePages: 88064 кБ CmaTotal: 0 кБ CmaFree: 0 кБ HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Огромный размер страницы: 2048 кБ DirectMap4k: 43008 КБ 10055 КБМ682MB2

Какой предпочитаемый способ получения текущего состояния системы (текущий процессор, оперативная память, свободное место на диске и т. Д.) В Python? Бонусные баллы для * nix и Windows платформ.

Кажется, есть несколько возможных способов извлечь это из моего поиска:

Использование библиотеки, такой как PSI (которая в настоящее время, кажется, не активно развивается и не поддерживается на нескольких платформах) или что-то вроде pystatgrab (опять нет активности с 2007 года, как кажется и нет поддержки Windows).

Использование специального кода платформы, например, os.popen("ps") или аналогичного для систем * nix и MEMORYSTATUS в ctypes.windll.kernel32 (см. этот рецепт на ActiveState ) для платформы Windows. Можно поместить класс Python вместе со всеми этими фрагментами кода.

Не то чтобы эти методы плохие, но уже существует хорошо поддерживаемый, многоплатформенный способ сделать то же самое?

Библиотека 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).

ОБНОВЛЕНИЕ: Вот несколько примеров использования psutil :

Вот кое-что, что я собрал некоторое время назад, это только окна, но может помочь вам получить часть того, что вам нужно сделать.

ПРИМЕЧАНИЕ. Интерфейс / процесс WMI также доступен для выполнения аналогичных задач. Я не использую его здесь, потому что текущий метод покрывает мои потребности, но если когда-нибудь потребуется его расширить или улучшить, то, возможно, захочется исследовать инструменты WMI как доступную. ,

Этот скрипт для использования процессора:

Основываясь на коде использования процессора @Hrabal, я использую это:

Я чувствую, что эти ответы были написаны для Python 2, и в любом случае никто не упомянул стандарт resource пакет, который доступен для Python 3. Он предоставляет команды для получения ресурса limit для данного процесса (вызывающий процесс Python по умолчанию). Это не то же самое, что получение текущего использования ресурсов системой в целом, но это может решить некоторые из тех же проблем, например, например, «Я хочу убедиться, что я использую только X много оперативной памяти с этим сценарием».

Мы решили использовать для этого обычный источник информации, потому что мы могли находить мгновенные колебания в свободной памяти и чувствовали, что полезен запрос источника данных meminfo . Это также помогло нам получить еще несколько связанных параметров, которые были предварительно проанализированы.

Вывод для справки (мы удалили все новые строки для дальнейшего анализа)

MemTotal: 1014500 кБ MemFree: 562680 кБ MemAvailable: 646364 кБ Буферы: 15144 кБ Кэшированные: 210720 КБ Свопинговые: 0 КБ Активные: 261476 КБ Неактивные: 128888 КБ Активные (анон): 167092 КБ Неактивные (анон): файл 20888 КБ Активные (файл) : 94384 КБ Неактивен (файл): 108000 КБ Неуязвим: 3652 КБ Блокировано: 3652 КБ Общий обмен: 0 КБ Свободный обмен: 0 КБ Грязный: 0 КБ Обратная запись: 0 КБ Количество страниц: 168160 КБ Отображено: 81352 КБ Shmem: 21060 КБ Плита: 34492 SRExlaimable: 18044 кБ 0 кБ AnonHugePages: 88064 кБ CmaTotal: 0 кБ CmaFree: 0 кБ HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Огромный размер страницы: 2048 кБ DirectMap4k: 43008 КБ 10055 КБММ682

У меня ниже коды, без внешних библиотек работали. Я тестировал на Python 2.7.9

Загрузка процессора

«. текущее состояние системы (текущий процессор, оперативная память, свободное место на диске и т. д.)» И «* nix и платформы Windows» могут оказаться трудной комбинацией.

Операционные системы принципиально отличаются тем, как они управляют этими ресурсами. Действительно, они различаются по основным понятиям, таким как определение того, что считается системой, а что - временем приложения.

"Свободное место на диске"? Что считается "дисковым пространством"? Все разделы всех устройств? А как насчет внешних разделов в мультизагрузочной среде?

Я не думаю, что существует достаточно четкий консенсус между Windows и * nix, который делает это возможным. Действительно, между различными операционными системами, называемыми Windows, может и не быть единого мнения. Есть ли один Windows API, который работает как для XP, так и для Vista?

Я не верю, что есть хорошо поддерживаемая многоплатформенная библиотека. Помните, что сам Python написан на C, поэтому любая библиотека просто примет умное решение о том, какой фрагмент кода для конкретной ОС запускать, как вы предложили выше.

Используйте библиотеку psutil. На Ubuntu 18.04 pip установлен 5.5.0 (последняя версия) по состоянию на 1-30-2019. Старые версии могут вести себя несколько иначе. Вы можете проверить свою версию psutil, выполнив это в Python:

Чтобы получить статистику по памяти и процессору:

virtual_memory (кортеж) будет иметь процент использования памяти в масштабе всей системы. Это казалось мне завышенным на несколько процентов в Ubuntu 18.04.

Вы также можете получить память, используемую текущим экземпляром Python:

Который дает текущее использование памяти вашего скрипта Python.

На странице pypi для psutil есть еще несколько подробных примеров.

Только для Linux: одна строка для использования ОЗУ с зависимостью только от stdlib:

Читайте также: