Obtenir de la RAM totale / libre depuis Python
Question
À partir d'une application Python, comment puis-je obtenir la quantité totale de RAM du système et combien de celle-ci est actuellement gratuite, de manière multiplateforme?
Idéalement, la quantité de RAM disponible ne doit prendre en compte que la mémoire physique pouvant effectivement être allouée au processus Python.
La solution
Avez-vous essayé SIGAR - collecteur d’informations système ? Après l'installation
import os, sigar
sg = sigar.open()
mem = sg.mem()
sg.close()
print mem.total() / 1024, mem.free() / 1024
J'espère que cela vous aidera
Autres conseils
psutil serait un autre bon choix. Cependant, une bibliothèque doit être installée.
>>> 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)
Pour la partie mémoire libre, il existe une fonction dans la bibliothèque wx:
wx.GetFreeMemory()
Malheureusement, cela ne fonctionne que sous Windows. Les ports Linux et Mac renvoient " -1 " ou déclencher une NotImplementedError
.
Vous ne pouvez pas faire cela uniquement avec la bibliothèque Python standard, bien qu'un package tiers puisse le faire. Sinon, vous pouvez utiliser le package os pour déterminer le système d'exploitation utilisé et utiliser ces informations pour obtenir les informations souhaitées pour ce système (et les encapsuler dans une fonction multiplate-forme unique).
Dans Windows, j'utilise cette méthode. C'est un peu hacky mais cela fonctionne avec la bibliothèque 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)