Получение полной / свободной оперативной памяти из Python
Вопрос
Как из приложения 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)