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.

Était-ce utile?

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top