Python CPU-Temperatur abrufen

Salman Mehmood 21 Juni 2023
Python CPU-Temperatur abrufen

Das Hauptziel dieses Artikels ist es zu demonstrieren, wie man die CPU-Temperatur mit Hilfe der pythonnet-Bibliothek in Python lesen und anzeigen kann.

Python CPU-Temperatur abrufen

Abhängig davon, welche Art von Anwendung Sie entwerfen, kann es möglich sein, dass Sie die Ressourcen des Computers überwachen möchten, auf dem das Programm ausgeführt wird.

Diese Situation kann aus vielen Gründen entstehen. Vielleicht möchten Sie, dass Ihr Programm auf eine bestimmte Weise reagiert, wenn die Systemressourcen einen bestimmten Schwellenwert erreichen.

Die Anwendungsfälle können von Programm zu Programm unterschiedlich sein.

Von diesen Systemressourcen ist die CPU-Temperatur in bestimmten Anwendungen und Anwendungsfällen von erheblicher Bedeutung.

Vielleicht belastet Ihr Programm die CPU zu sehr und verschlingt viele unnötige Ressourcen. Möglicherweise möchten Sie Maßnahmen ergreifen, um dieses Problem zu mindern, aufgrund dessen Sie wahrscheinlich die Temperatur verschiedener Maschinenkomponenten überwachen müssen, darunter die CPU.

Um dieses spezielle Problem zu lösen, können wir die von OpenHardwareMonitor bereitgestellten DLLs (Dynamic Link Libraries) verwenden.

Dieser Abschnitt kann in die folgenden Teile unterteilt werden:

  1. Einbau
  2. Umsetzung
  3. Überwachen

Installation

Zuerst müssen wir pythonnet herunterladen, um mit den DLLs kommunizieren zu können. Führen Sie dazu den folgenden Befehl in Ihrem Terminal aus.

pip install pythonnet

Dies ergibt die folgende Ausgabe:

Collecting pythonnet
  Downloading pythonnet-3.0.0.post1-py3-none-any.whl (279 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 279.4/279.4 kB 639.3 kB/s eta 0:00:00
Requirement already satisfied: clr-loader<0.3.0,>=0.2.2 in c:\program files\python310\lib\site-packages (from pythonnet) (0.2.4)
Requirement already satisfied: cffi>=1.13 in c:\program files\python310\lib\site-packages (from clr-loader<0.3.0,>=0.2.2->pythonnet) (1.15.1)
Requirement already satisfied: pycparser in c:\program files\python310\lib\site-packages (from cffi>=1.13->clr-loader<0.3.0,>=0.2.2->pythonnet) (2.21)
Installing collected packages: pythonnet
Successfully installed pythonnet-3.0.0.post1

Nachdem Sie pythonnet erfolgreich installiert haben, ist es an der Zeit, OpenHardwareMonitor herunterzuladen. Laden Sie die Software von hier herunter.

Nachdem Sie den Download abgeschlossen haben, installieren Sie die Anwendung. Nachdem:

  • Wechseln Sie in das Verzeichnis, in dem Sie OpenHardwareMonitor installiert haben.
  • Finden Sie OpenHardwareMonitorLib.dll aus den Dateien im Ordner.
  • Kopieren Sie in den gewünschten Ordner, vorzugsweise dort, wo Ihr Python-Skript gespeichert ist.

Implementierung

Nachdem der Installationsprozess abgeschlossen ist, ist es an der Zeit, den eigentlichen Code zu implementieren.

Betrachten Sie den folgenden Code:

import clr  # package pythonnet, not clr

openhardwaremonitor_sensortypes = [
    "Voltage",
    "Clock",
    "Temperature",
    "Load",
    "Fan",
    "Flow",
    "Control",
    "Level",
    "Factor",
    "Power",
    "Data",
    "SmallData",
]


def initialize_openhardwaremonitor():
    file = "D:\\Path_TO_DLL\\OpenHardwareMonitorLib.dll"

    clr.AddReference(file)

    from OpenHardwareMonitor import Hardware

    handle = Hardware.Computer()
    handle.MainboardEnabled = True
    handle.CPUEnabled = True
    handle.RAMEnabled = True
    handle.GPUEnabled = True
    handle.HDDEnabled = True

    handle.Open()
    return handle


def fetch_stats(handle):
    for i in handle.Hardware:
        i.Update()
        for sensor in i.Sensors:
            parse_sensor(sensor)

        for j in i.SubHardware:
            j.Update()
            for subsensor in j.Sensors:
                parse_sensor(subsensor)


def parse_sensor(sensor):
    hardwaretypes = openhardwaremonitor_hwtypes

    if sensor.Value is not None:
        if str(sensor.SensorType) == "Temperature":
            print(
                u"%s %s Temperature Sensor #%i %s - %s\u00B0C"
                % (
                    hardwaretypes[sensor.Hardware.HardwareType],
                    sensor.Hardware.Name,
                    sensor.Index,
                    sensor.Name,
                    sensor.Value,
                )
            )


if __name__ == "__main__":
    print("OpenHardwareMonitor:")
    HardwareHandle = initialize_openhardwaremonitor()
    fetch_stats(HardwareHandle)

Mit dem clr-Modul können wir eine Schnittstelle mit der .NET-DLL namens OpenHardwareMonitorLib.dll herstellen. Wir können seine Funktionen und Attribute weiterhin in unserem Python-Code verwenden und schließlich die Temperatur der CPU und anderer Komponenten ablesen, die wir möglicherweise anzeigen möchten.

Eine detaillierte Übersicht darüber, wofür jedes Attribut steht und welche Funktion es hat, finden Sie in der Dokumentation von OpenHardwareMonitor auf Github.

Für alle anderen benutzerdefinierten Funktionen wird empfohlen, sich den Code anzusehen, um ein besseres Verständnis und Einblick in die interne Funktionsweise des Codes zu erhalten.

Monitor

Nachdem wir den Code geschrieben haben, ist es an der Zeit, das Programm auszuführen. Denken Sie daran, dass Sie dieses Skript als Administrator ausführen müssen; Andernfalls wird der Code nicht richtig ausgeführt und kann möglicherweise die erforderlichen Messwerte nicht korrekt oder gar nicht anzeigen.

Öffnen Sie die Eingabeaufforderung oder ein beliebiges Terminal Ihrer Wahl und führen Sie das Skript aus. Für den obigen Code wird die folgende Ausgabe angezeigt, wenn er als Administrator ausgeführt wird:

OpenHardwareMonitor:                                                                                                    CPU Intel Core i7-4800MQ Temperature Sensor #0 CPU Core #1 - 60.0°C                                                     CPU Intel Core i7-4800MQ Temperature Sensor #1 CPU Core #2 - 66.0°C                                                     CPU Intel Core i7-4800MQ Temperature Sensor #2 CPU Core #3 - 58.0°C                                                     CPU Intel Core i7-4800MQ Temperature Sensor #3 CPU Core #4 - 58.0°C                                                     CPU Intel Core i7-4800MQ Temperature Sensor #4 CPU Package - 66.0°C                                                     GpuNvidia NVIDIA Quadro K1100M Temperature Sensor #0 GPU Core - 43.0°C                                                  HDD ST500LT012-9WS142 Temperature Sensor #0 Temperature - 37.0°C
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Verwandter Artikel - Python CPU