9
votes

Obtenir une bélière totale / gratuite de Python

à 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?

Idéalement, la quantité de RAM libre devrait considérer uniquement la mémoire physique pouvant être allouée au processus Python.


3 commentaires

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.


5 Réponses :


3
votes

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


2 commentaires

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



12
votes

Avez-vous essayé Sigar - Cueillette d'informations système et journaliste ? Après l'installation xxx

espère que cela aide


1 commentaires

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.



6
votes

Pour la pièce de mémoire libre, il existe une fonction dans la bibliothèque WX: xxx

Malheureusement, cela ne fonctionne que sur Windows. Les ports Linux et MAC renvoient "-1" ou soulèvent un notimpledeError .


1 commentaires

J'ai notimpledeError en utilisant wx.getfreemorory ()



7
votes

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)


0 commentaires

1
votes

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)


0 commentaires