à partir d'une application Python, comment puis-je obtenir la quantité totale de RAM du système et sa quantité actuellement gratuite, de manière croisée? P>
Idéalement, la quantité de RAM libre devrait considérer uniquement la mémoire physique pouvant être allouée au processus Python. P>
5 Réponses :
Vous ne pouvez pas faire cela avec juste la bibliothèque python standard, bien qu'il puisse y avoir un paquet tiers qui le fait. En empêchant, vous pouvez utiliser le package OS pour déterminer quel système d'exploitation vous utilisez et utilisez ces informations pour acquérir les informations que vous souhaitez pour ce système (et encapsulez-la dans une seule fonction multiple). P>
C'est ce que j'ai pensé ... mais comment je l'accomplirais sur chacun des principaux systèmes d'exploitation?
Eh bien, comme Sunqiang posté, vous pourriez essayer SIGAR (pas sûr quelles autres dépendances qu'il aurait pu avoir, le cas échéant). Sur Linux, vous pouvez obtenir des informations de mémoire de / proc / meminfo et sur d'autres unes, vous pouvez l'obtenir à partir de VMSTAT. Sur Windows, vous devrez probablement appeler une API Win32 (que vous pouvez faire avec CTTYPES, ou avec le package Python Win32).
Avez-vous essayé Sigar - Cueillette d'informations système et journaliste ?
Après l'installation espère que cela aide p> p>
Bien que cette réponse acceptée soit probablement parfaitement valide, une meilleure solution en 2015 est maintenant Psutil (comme recommandé par Gringo Suave), ce qui ne fait pas partie de la bibliothèque standard, mais au moins est disponible totalement sans douleur via PIP.
Pour la pièce de mémoire libre, il existe une fonction dans la bibliothèque WX: Malheureusement, cela ne fonctionne que sur Windows. Les ports Linux et MAC renvoient "-1" ou soulèvent un notimpledeError code>. P> p>
J'ai notimpledeError code> en utilisant wx.getfreemorory () code>
Psutil serait un autre bon choix. Il a également besoin d'une bibliothèque installée toutefois.
>>> 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)
dans Windows, j'utilise cette méthode. C'est un peu hacky, mais cela fonctionne à l'aide de la bibliothèque d'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)
Duplicates possibles: Stackoverflow.com/questions/466684/... et Stackoverflow.com/Questtions/276052/...
Total RAM et actuellement gratuit ne sont pas des concepts de plate-forme croix. Windows et GNU / Linux sont des systèmes d'exploitation différents. Lequel veut-tu? L'autre sera différent.
Psutil fait un excellent travail sur celui-ci.