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.

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top