Frage

Aus einer Python-Anwendung, wie kann ich die Gesamtmenge an RAM des Systems und wie viel davon ist zur Zeit frei, in einer plattformübergreifende Art und Weise?

Idealerweise die Menge des freien RAM sollte nur physische Speicher berücksichtigen, die tatsächlich an den Python-Prozess zugeordnet werden können.

War es hilfreich?

Lösung

Haben Sie versucht, SIGAR - System Information Gatherer Und Reporter ? Nach der Installation

import os, sigar

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

Hope, das hilft

Andere Tipps

psutil wäre eine gute Wahl sein. Es braucht auch eine Bibliothek installiert jedoch.

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

Für den freien Speicherteil gibt es eine Funktion in der wx Bibliothek:

wx.GetFreeMemory()

Leider funktioniert dies nur unter Windows. Linux und Mac-Ports entweder Rückkehr "-1" oder eine NotImplementedError erhöhen.

Sie können dies nicht nur mit dem Standard-Python-Bibliothek, obwohl es vielleicht einige Dritte Paket sein, das es tut. Abgesehen davon, können Sie das OS-Paket verwenden, um zu bestimmen, welches Betriebssystem sind Sie auf und verwenden diese Informationen zu erhalten, die Informationen, die Sie für dieses System wollen (und kapseln, dass in einer einzigen Cross-Plattform-Funktion).

In Windows verwende ich diese Methode. Es ist ein bisschen hacky aber es funktioniert Standard-OS-Bibliothek:

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top