Pergunta

A partir de uma aplicação do Python, como posso obter a quantidade total de RAM do sistema e como muito do que é atualmente livre, de uma forma multi-plataforma?

O ideal é que a quantidade de RAM livre deve considerar apenas memória física que pode realmente ser atribuída ao processo Python.

Foi útil?

Solução

Você já tentou SIGAR - System Information Gatherer E Reporter ? Depois de instalar

import os, sigar

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

Espero que isso ajude

Outras dicas

psutil seria outra boa opção. Ele também precisa de uma biblioteca instalada no entanto.

>>> 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)

Para a parte de memória livre, há uma função na biblioteca wx:

wx.GetFreeMemory()

Infelizmente, isso só funciona no Windows. portas Linux e Mac tanto retorno "-1" ou aumentar a NotImplementedError.

Você não pode fazer isso com apenas a biblioteca Python padrão, embora possa haver algum terceiro pacote partido que faz isso. Exceto isso, você pode usar o pacote de sistema operacional para determinar qual sistema operacional você está e usar essa informação para adquirir a informação que você quer para aquele sistema (e encapsular isso em uma única função multi-plataforma).

No windows eu utilizar este método. É meio hacky mas funciona usando a biblioteca Standard OS:

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top