Pregunta

Desde dentro de una aplicación de Python, ¿cómo puedo obtener la cantidad total de RAM del sistema y qué cantidad de ella es actualmente gratuita, de forma multiplataforma?

Idealmente, la cantidad de RAM libre debería considerar solo la memoria física que se puede asignar al proceso de Python.

¿Fue útil?

Solución

¿Ha intentado SIGAR - Recopilador y reportero de información del sistema ? Después de instalar

import os, sigar

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

Espero que esto ayude

Otros consejos

psutil sería otra buena opción. Sin embargo, también necesita una biblioteca instalada.

>>> 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 la parte de memoria libre, hay una función en la biblioteca wx:

wx.GetFreeMemory()

Lamentablemente, esto solo funciona en Windows. Los puertos de Linux y Mac devuelven " -1 " o levante un NotImplementedError .

No puedes hacer esto solo con la biblioteca estándar de Python, aunque podría haber algún paquete de terceros que lo haga. De lo contrario, puede usar el paquete os para determinar en qué sistema operativo se encuentra y usar esa información para adquirir la información que desea para ese sistema (y encapsular eso en una única función multiplataforma).

En Windows utilizo este método. Es un poco pirateado pero funciona con una biblioteca estándar de sistemas operativos:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top