Получение полной / свободной оперативной памяти из Python

StackOverflow https://stackoverflow.com/questions/1204378

  •  05-07-2019
  •  | 
  •  

Вопрос

Как из приложения Python можно получить общий объем оперативной памяти системы и сколько ее в настоящее время свободно, кросс-платформенным способом?

В идеале, объем свободной оперативной памяти должен учитывать только физическую память, которая фактически может быть выделена для процесса Python.

Это было полезно?

Решение

Пробовали ли вы SIGAR - сборщик информации о системе и репортер ? После установки

import os, sigar

sg = sigar.open()
mem = sg.mem()
sg.close() 
print mem.total() / 1024, mem.free() / 1024

Надеюсь, это поможет

Другие советы

psutil был бы еще одним хорошим выбором. Однако для этого также нужна библиотека.

>>> import psutil
>>> psutil.virtual_memory()
vmem(total=8374149120L, available=2081050624L, percent=75.1,
     used=8074080256L, free=300068864L, active=3294920704,
     inactive=1361616896, buffers=529895424L, cached=1251086336)

Для части свободной памяти в библиотеке wx есть функция:

wx.GetFreeMemory()

К сожалению, это работает только в Windows. Порты Linux и Mac либо возвращают " -1 " или вызовите NotImplementedError .

Вы не можете сделать это только с помощью стандартной библиотеки Python, хотя может быть какой-то сторонний пакет, который делает это. За исключением этого, вы можете использовать пакет os, чтобы определить, в какой операционной системе вы работаете, и использовать эту информацию для получения необходимой вам информации для этой системы (и инкапсулировать ее в одну кроссплатформенную функцию).

В Windows я использую этот метод. Это немного странно, но работает с использованием стандартной библиотеки ОС:

import os
process = os.popen('wmic memorychip get capacity')
result = process.read()
process.close()
totalMem = 0
for m in result.split("  \r\n")[1:-1]:
    totalMem += int(m)
print totalMem / (1024**3)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top