Seite 1 von 1
CPU-Informationen
Verfasst: Dienstag 24. März 2020, 18:12
von iTobi_DerErste
Code: Alles auswählen
import time, os
from gpiozero import CPUTemperature
i = 1
cpu_temp = os.system('sudo vcgencmd measure_temp')
cpu_voltage = os.system('/opt/vc/bin/vcgencmd measure_volts')
cpu_tact = os.system('/opt/vc/bin/vcgencmd measure_clock core')
while i == 1:
print(cpu_temp)
print(cpu_voltage)
int(cpu_tact);
cpu_tact / 1000000;
print(cpu_tact);
time.sleep(1);
diesen Python code habe ich geschriben um mir CPU-Informationenn Anzeigen zu lassen.
Die Takt frequenz möchte ich lediglich in Ghz anzeigen lassen.
Die CPU temperatur und Spannung wir allerdings nicht angezeigt.
Außerdem möchte ich mir die CPU-Auslast anzeigen lassen.
Jemand Vorschläge?
LG Tobi
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 19:07
von __deets__
Du musst die Kommandos schon in die Schleife packen, sonst wird darin ja nie ein aktueller Wert ermittelt.
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 19:11
von iTobi_DerErste
__deets__ hat geschrieben: ↑Dienstag 24. März 2020, 19:07
Du musst die Kommandos schon in die Schleife packen, sonst wird darin ja nie ein aktueller Wert ermittelt.
Das habe ich auch schon versucht.
Und das funktioniert auch relativ gut.
Mein problem ist, dass isch die Frequenz für meinen 4B in GHz anzeigen lassen möchte.
so wie das jetzt ist gibt er mir nur "0" aus.
Außerdem möchte ich mir die CPU-Auslast ebenfalls anzeigen lassen.
LG Tobi
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 19:18
von __deets__
Deine cpu_tact-Berechnung erfolgt ohne das das Ergebnis irgendetwas zugewiesen wird. Du musst
schreiben. Oder du benutzt den /=-Operator, der das dann gleich in einem macht, wenn a und b die gleiche Variable sein sollen
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 19:19
von iTobi_DerErste
Ah okay danke. Nur leider gibt er immer noch 0 aus.
Code: Alles auswählen
import time, os, sys
i = 1
while i == 1:
cpu_temp = os.system('sudo vcgencmd measure_temp')
cpu_voltage = os.system('sudo vcgencmd measure_volts')
cpu_tact = os.system('sudo vcgencmd measure_clock core')
float(cpu_tact)
cpu_tact_GHz = cpu_tact / 1000000
print('Taktfrequenz:' + str(cpu_tact_GHz))
time.sleep(1)
Das Problem mit meiner CPU Auslast...
Hast du dafür vielleicht auch eine Lösung ?? @__deet__
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 19:32
von __deets__
Hast du mal gegoogelt? Das muesste ich jetzt naemlich auch tun.
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 19:39
von iTobi_DerErste
Ja schon mehrfach. nur leider finde ich dazu nichts
Mein vorherigen Kommentar habe ich nocmak nacträglich geändert. wärst du so freundlich und würdest du da noch einmal rübergucken, dass wäre sehr nett.
LG Tobi
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 19:55
von __deets__
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 19:58
von iTobi_DerErste
Super Danke dir @__deet__
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 20:19
von __blackjack__
@iTobi_DerErste: Noch mal zum ersten Code: Der tut nicht was Du glaubst was der tut weil `os.system()` etwas anderes zurück gibt als Du anscheinend denkst. Was das ist, solltest Du mal in der Dokumentation nachlesen. Da steht dann auch der Hinweis das `os.system()` nicht verwendet werden sollte, und was man stattdessen verwendet wenn man externe Programme ausführen möchte.
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 20:46
von iTobi_DerErste
Meinst du Subprocess.Popen wäre besser?
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 21:45
von __deets__
Jein. subprocess ja, aber dir reicht subprocess.run. Mit entsprechenden Optionen, um die Ausgabe auch zurueck zu bekommen.
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 21:57
von iTobi_DerErste
Ok Danke. habe das problem mit eurer hilfe doch geklärt. Der psutil Tipp von @__deets__ war Gold wert.
Code: Alles auswählen
import time, psutil
i = 1
while i == 1:
print('CPU-Usage: ' + str(psutil.cpu_percent(interval=0, percpu=False)) + '%')
print('CPU-Frequency: ' + str(psutil.cpu_freq()))
print('Temperatures: ' + str(psutil.sensors_temperatures()))
time.sleep(2)
Danke an alle die mir geholfen haben
LG Tobi
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 22:26
von __blackjack__
@iTobi_DerErste: Jetzt noch das überflüssige `i` und das zusammenstückeln von Zeichenketten und Werten mit ``+`` und `str()` raus:
Code: Alles auswählen
#!/usr/bin/env python3
import time
import psutil
def main():
while True:
print("CPU-Usage: {}%".format(psutil.cpu_percent()))
print("CPU-Frequency: {}".format(psutil.cpu_freq()))
print("Temperatures: {}".format(psutil.sensors_temperatures()))
time.sleep(2)
if __name__ == "__main__":
main()
Re: CPU-Informationen
Verfasst: Dienstag 24. März 2020, 23:46
von iTobi_DerErste
Danke @__blackjack__
Aber ich denke mal ich lass das so wie ich das jetzt habe. Das ist für mich am einfachsten.
Code: Alles auswählen
import time, psutil
from gpiozero import CPUTemperature
i = 1
while i == 1:
print('CPU-Usage: ' + str(psutil.cpu_percent(interval=0, percpu=False)) + '%')
print('CPU-Tact: ' + str(psutil.cpu_freq()[0]) + ' MHz')
cpu_temp = CPUTemperature()
print('CPU-Temperature: ' + str(cpu_temp.temperature) + '*C')
print('RAM-Usage: ' + str(psutil.virtual_memory()[2]) + '%')
print('---------------------------------------------------------------')
time.sleep(1.5)
Re: CPU-Informationen
Verfasst: Mittwoch 25. März 2020, 00:30
von __blackjack__
Ist dann halt nicht wirklich Python, sondern eher BASIC. Und das mit dem ``i = 1`` und ``while i == 1:`` ist unnötig umständlich.