Bei Verwendung von Raspberry Pi 4 wird die CPU ziemlich heiß. Ich wollte herausfinden, wie heiß die CPU war, also habe ich mit Python3 ein Programm erstellt, das alle 5 Sekunden die CPU-Temperatur anzeigt.
OS : Ubuntu server20.04 + Xubuntu Desktop(gdm3)
cpu_temperature.py
import time
import threading
import subprocess
def schedule(interval, func, wait = True):
base_time = time.time()
next_time = 0
while True:
t = threading.Thread(target = func)
t.start()
if wait:
t.join()
next_time = ((base_time - time.time()) % interval) or interval
time.sleep(next_time)
def get_cpu_temperature():
output = subprocess.check_output("cat /sys/class/thermal/thermal_zone0/temp", shell = True, encording = "UTF-8")
return int(output) / 1000
def print_cpu_temperature():
print(get_cpu_temperature())
if __name__ == "__main__":
schedule(5, print_cpu_temperature)
Ich habe auf den folgenden Artikel verwiesen. Verarbeitung in Python in regelmäßigen Abständen ausführen Dies ist ein Paket der im Artikel eingeführten Zeitplanfunktion. Sie können angeben, wie viele Sekunden Sie mit Intervall ausführen möchten und welche Funktion Sie mit func ausführen möchten. Einzelheiten finden Sie im Artikel unter der URL.
Ich habe auf den folgenden Artikel verwiesen. Ich habe versucht, die CPU-Temperatur von Raspberry Pi (Raspbian) ohne Verwendung von cat zu ermitteln Befehl von Python ausführen Es scheint, dass die CPU-Temperatur mit der Methode vcgencmd ermittelt werden kann, aber dieses Mal habe ich mich für die Verwendung von cat anstelle dieser Methode entschieden. Wenn Sie cat verwenden, wird es mit dem 1000-fachen des Werts ausgegeben, sodass es schwer zu verstehen ist, ob Sie es so anzeigen, wie es ist.
Es gibt verschiedene Möglichkeiten, Linux-Befehle von Python3 aus aufzurufen. Dieses Mal wollte ich jedoch die mit cat in Python erhaltene Zeichenfolge verarbeiten. Daher habe ich mich für die Funktion check_output entschieden.
Ermitteln Sie die CPU-Temperatur mit cat mit der Funktion check_output. Da der Wert so wie er ist mit 1000 multipliziert wird, habe ich die Zeichenfolge in int geändert und durch 1000 geteilt, damit sie zurückkehrt. Wenn Sie vcgencmd verwenden, können Sie es so zurückgeben, wie es ist.
Diese Funktion gibt nur den Wert aus, der von der Funktion get_cput_temperature erhalten wurde. Ursprünglich habe ich versucht, ein Diagramm mit der Schedule-Funktion und der get_cpu_temperature-Funktion zu zeichnen, aber vorher hatte ich ein Problem, wenn die beiden oben genannten Funktionen nicht richtig funktionierten, also habe ich diese Funktion erstellt.
Dies bedeutet, dass die Funktion print_cpu_temperature alle 5 Sekunden ausgeführt wird. Wenn Sie den 5-Teil auf 10 ändern, beträgt das Intervall 10 Sekunden.
Recommended Posts