Ottenere RAM totale / gratuita da Python
Domanda
Dall'interno di un'applicazione Python, come posso ottenere la quantità totale di RAM del sistema e quanto attualmente è libera, in modo multipiattaforma?
Idealmente, la quantità di RAM libera dovrebbe considerare solo la memoria fisica che può effettivamente essere allocata al processo Python.
Soluzione
Hai provato SIGAR - System Information Gatherer And Reporter ? Dopo l'installazione
import os, sigar
sg = sigar.open()
mem = sg.mem()
sg.close()
print mem.total() / 1024, mem.free() / 1024
Spero che questo aiuti
Altri suggerimenti
psutil sarebbe un'altra buona scelta. Tuttavia ha anche bisogno di una libreria installata.
>>> 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)
Per la parte di memoria libera, c'è una funzione nella libreria wx:
wx.GetFreeMemory()
Sfortunatamente, questo funziona solo su Windows. Le porte Linux e Mac restituiscono "-1" o genera un NotImplementedError
.
Non puoi farlo solo con la libreria Python standard, anche se potrebbe esserci un pacchetto di terze parti che lo fa. A parte questo, puoi usare il pacchetto os per determinare su quale sistema operativo sei e usare quelle informazioni per acquisire le informazioni che desideri per quel sistema (e incapsularle in una singola funzione multipiattaforma).
In Windows utilizzo questo metodo. È un po 'confuso ma funziona usando la libreria os standard:
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)