Wie man die aktuelle CPU-und RAM-Verwendung in Python?
Was ist Ihre bevorzugte Weg, um in der aktuellen system-status (aktuelle CPU, RAM, Speicherplatz, etc.) in Python? Bonus-Punkte für *nix-und Windows-Plattformen.
Scheint es wenige Möglichkeiten zu extrahieren, die von meiner Suche:
- Verwendung einer Bibliothek wie PSI (das scheint derzeit nicht aktiv entwickelt wird und nicht unterstützt, auf mehreren Plattformen) oder so etwas wie pystatgrab (wieder keine Aktivität seit 2007 scheint es, und keine Unterstützung für Windows).
- Verwendung von Plattform-spezifischen code, wie zum Beispiel mit einem
os.popen("ps")
oder ähnliches für die *nix-Systeme undMEMORYSTATUS
imctypes.windll.kernel32
(siehe dieses Rezept ActiveState) für die Windows-Plattform. Könnte man eine Python-Klasse, zusammen mit alle diese code-snippets.
Es ist nicht so, dass diese Methoden schlecht sind, aber gibt es bereits eine gut unterstützte, multi-Plattform-Weg, die gleiche Sache zu tun?
Sie konnten bauen Sie Ihren eigenen Multiplattform-Bibliothek mit dynamischen imports: "wenn sys.platform == 'win32': import win_sysstatus als sysstatus; else" ...
Es wäre cool etwas zu haben, was funktioniert auf der App Engine.
Das Alter der Pakete von Bedeutung? Wenn jemand hat Sie gleich beim ersten mal, warum würden Sie nicht immer noch richtig sein?
Es wäre cool etwas zu haben, was funktioniert auf der App Engine.
Das Alter der Pakete von Bedeutung? Wenn jemand hat Sie gleich beim ersten mal, warum würden Sie nicht immer noch richtig sein?
InformationsquelleAutor lpfavreau | 2008-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Bibliothek psutil geben Sie einige system-Informationen (CPU /Speicher) auf einer Vielzahl von Plattformen:
UPDATE: Hier sind einige Beispiel-Verwendungen von
psutil
:$ pip install psutil
;>>> import psutil; psutil.cpu_percent()
und>>> psutil.virtual_memory()
das gibt einen schönen vmem-Objekt:vmem(total=8589934592L, available=4073336832L, percent=52.6, used=5022085120L, free=3560255488L, active=2817949696L, inactive=513081344L, wired=1691054080L)
Wie würde man dies tun, ohne die Bibliothek psutil?
Es ist ein builtin-Bibliothek in python genannt resource. Jedoch, es scheint, die meisten Sie tun können, ist greifen die Speicher, die eine einzelne python-Prozess und/oder seine Kind-Prozesse. Es scheint auch nicht sehr genau. Ein kurzer test zeigte Ressource wird deaktiviert, indem über 2MB von meinem mac-Dienstprogramm-tool.
überprüfen Sie einfach Quelle von psutil 😉
Sie haben einen Tippfehler in der Zeichenfolge "psutil.virtual_memory()`"
InformationsquelleAutor Jon Cage
Verwenden Sie die Bibliothek psutil. Auf Ubuntu 18.04, pip 5.5.0 installiert (neueste version) 1-30-2019. Vielleicht können ältere Versionen Verhalten sich etwas anders.
Sie können Ihre version von psutil dadurch in Python:
Um einige der Speicher-und CPU-Statistiken:
Den
virtual_memory
(Tupel) wird die Prozent-Speicher-system-wide. Dies schien zu sein, überschätzt von ein paar Prozent für mich auf Ubuntu 18.04.Können Sie auch den Arbeitsspeicher, der von der aktuellen Python-Instanz:
welche gibt die aktuelle Speicherauslastung Ihres Python-Skript.
Gibt es einige tiefergehende Beispiele auf der pypi-Seite für psutil.
InformationsquelleAutor wordsforthewise
One-liner für die RAM-Auslastung mit nur stdlib Abhängigkeit:
InformationsquelleAutor Hrabal
Unten-codes, ohne externe Bibliotheken, die für mich gearbeitet. Getestet habe ich auf Python 2.7.9
CPU-Auslastung
Und Ram-Auslastung, Gesamte, Verwendete und Freie
grep
undawk
wäre besser aufgepasst, durch die string-Verarbeitung in Python?Persönlich nicht vertraut mit awk, machte eine awkless version der cpu-Auslastung snippet unten. Sehr praktisch, danke!
Es ist unaufrichtig, zu sagen, dass dieser code nicht die Verwendung von externen Bibliotheken. In der Tat, diese haben eine harte Abhängigkeit der Verfügbarkeit von grep, awk und kostenlos. Das macht der code oben nicht tragbar. Die OP erklärte, "Bonus-Punkte für *nix-und Windows-Plattformen."
InformationsquelleAutor CodeGench
Hier ist etwas, das ich zusammen eine Weile her, es ist nur windows, aber helfen kann Sie bekommen einen Teil von dem, was getan werden muss.
Abgeleitet von:
"für sys zur Verfügung mem"
http://msdn2.microsoft.com/en-us/library/aa455130.aspx
"einzelnen Prozess-Informations-und python-Skript-Beispiele"
http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true
HINWEIS: die WMI-Schnittstelle/Prozess ist auch für die, die ähnliche Aufgaben
Ich bin nicht hier, weil die aktuelle Methode deckt meine Bedürfnisse, aber wenn es eines Tages nötig, um erweitern oder verbessern, dann kann Sie untersuchen möchten der WMI-tools ein vailable.
WMI für python:
http://tgolden.sc.sabren.com/python/wmi.html
Code:
http://monkut.webfactional.com/blog/archive/2009/1/21/windows-process-memory-logging-python
yep. der link ist nun gebrochen.
Verwenden GlobalMemoryStatusEx statt GlobalMemoryStatus, weil das alte zurückgeben kann schlechte Werte.
Sie sollten es vermeiden
from x import *
Aussagen! Sie Unordnung der Haupt-namespace und überschreiben von Funktionen und Variablen.InformationsquelleAutor monkut
"... aktuellen system-status (aktuelle CPU, RAM, Speicherplatz, etc.)" Und "*nix-und Windows-Plattformen" kann eine schwierige Kombination zu erreichen.
Die Betriebssysteme unterscheiden sich fundamental in der Art, wie Sie die Verwaltung dieser Ressourcen. In der Tat, Sie unterscheiden sich in der grundlegenden Konzepte, wie die Definition, was zählt als system und was zählt als Anwendung der Zeit.
"Freier Speicherplatz"? Was zählt als "disk space?" Alle Partitionen der Geräte? Was ist mit ausländischen Partitionen in einer multi-boot-Umgebung?
Ich glaube nicht, dass es klar genug Konsens zwischen Windows und *nix, macht dies möglich. In der Tat kann es nicht sogar sein, einen Konsens zwischen den verschiedenen Betriebssystemen als Windows. Gibt es einen einzigen Windows-API, die funktioniert sowohl für XP und Vista?
df -h
Antworten auf die "disk space" - Frage sowohl auf Windows und *nix.Welches Windows? Ich bekomme ein 'df' wird nicht erkannt... Fehler Meldung von Windows XP Pro. Was bin ich?
Sie können neue Programme installieren, auf Windows zu.
InformationsquelleAutor S.Lott
Ich fühlen, wie diese Antworten wurden geschrieben für Python 2, und in jedem Fall niemand erwähnt die standard -
Ressourcen
- Paket, das verfügbar ist für Python 3. Es enthält Befehle für den Erhalt der Ressource Grenzen eines bestimmten Prozesses (der Aufruf Python-Prozess standardmäßig). Dies ist nicht das gleiche wie immer die aktuellen Nutzung von Ressourcen durch das system als ganzes, aber es lösen könnte einige der gleichen Probleme wie z.B. "ich möchte sicherstellen, dass ich nur X verwenden viel RAM mit diesem script."InformationsquelleAutor anoneemus
Wählten wir die Verwendung üblichen Informationen Quelle für diese, weil wir finden konnten, momentane Schwankungen im Speicher frei und fühlte Abfragen der meminfo Datenquelle hilfreich war. Dies half uns auch noch ein paar mehr Verwandte Parameter, die vorab analysiert werden.
Code
Ausgang für Referenz (wir zogen alle Zeilenumbrüche für die weitere Analyse)
InformationsquelleAutor Rahul
Dieses Skript für die CPU-Verwendung:
InformationsquelleAutor Subhash
CPU-details verwenden psutil Bibliothek
Für die RAM-Frequenz (in MHz) mit dem eingebauten Linux-Bibliothek dmidecode und manipulieren der Ausgabe ein bisschen ;). dieser Befehl benötigt root-Berechtigung, daher liefern Ihr Passwort zu. kopieren Sie einfach den folgenden commend ersetzen mypass mit Ihrem Passwort
[i for i in os.popen("echo mypass | sudo -S dmidecode -t memory | grep 'Clock Speed' | cut -d ':' -f2").read().split(' ') if i.isdigit()]
InformationsquelleAutor Saptarshi Ghosh
Können Sie psutil oder psmem mit subprocess
Beispiel-code
Referenz http://techarena51.com/index.php/how-to-install-python-3-and-flask-on-linux/
https://github.com/Leo-g/python-flask-cmd
InformationsquelleAutor LeoG
Auf der Grundlage der cpu-Auslastung-code von @Hrabal, dies ist, was ich verwenden:
InformationsquelleAutor Jay
Ich glaube nicht, dass es ist ein gut-unterstützt multi-Plattform-Bibliothek zur Verfügung. Denken Sie daran, dass Python selbst ist in C geschrieben, so dass jede Bibliothek ist einfach zu machen, eine kluge Entscheidung über die OS-spezifischen code-snippet zu führen, wie Sie oben vorgeschlagen.
da psutil ist ein gut-unterstützt multi-Plattform-Bibliothek, die Anzüge der ops muss evtl.
InformationsquelleAutor user35952