Python CPU 온도 얻기

Salman Mehmood 2023년6월21일
Python CPU 온도 얻기

이 기사의 주요 목표는 Python의 pythonnet 라이브러리를 사용하여 CPU 온도를 읽고 표시하는 방법을 시연하는 것입니다.

Python CPU 온도 얻기

디자인 중인 응용 프로그램 유형에 따라 프로그램이 실행 중인 컴퓨터의 리소스를 모니터링할 가능성이 있습니다.

이 상황은 여러 가지 이유로 발생할 수 있습니다. 시스템 리소스가 특정 임계값에 도달하면 프로그램이 특정 방식으로 작동해야 할 수 있습니다.

사용 사례는 프로그램마다 다를 수 있습니다.

이러한 시스템 리소스 중에서 CPU 온도는 특정 애플리케이션 및 사용 사례에서 매우 중요합니다.

프로그램이 CPU를 너무 많이 사용하고 불필요한 리소스를 많이 잡아먹고 있을 수 있습니다. 이 문제를 완화하기 위한 조치를 취하고 싶을 수 있습니다. 이로 인해 CPU가 그 중 하나인 다른 기계 구성 요소의 온도를 모니터링해야 할 수 있습니다.

이 특정 문제를 해결하기 위해 OpenHardwareMonitor에서 제공하는 DLL(Dynamic Link Libraries)을 사용할 수 있습니다.

이 섹션은 다음 부분으로 나눌 수 있습니다.

  1. 설치
  2. 시행
  3. 모니터

설치

먼저 DLL과 인터페이스할 수 있도록 pythonnet을 다운로드해야 합니다. 이렇게 하려면 터미널에서 다음 명령을 실행합니다.

pip install pythonnet

그러면 다음과 같은 결과가 나타납니다.

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

pythonnet을 성공적으로 설치했으면 이제 OpenHardwareMonitor를 다운로드할 차례입니다. 여기에서 소프트웨어를 다운로드하십시오.

다운로드가 완료되면 응용 프로그램을 설치하십시오. 이후:

  • OpenHardwareMonitor를 설치한 디렉토리로 이동합니다.
  • 폴더 안에 있는 파일에서 OpenHardwareMonitorLib.dll을 찾으십시오.
  • 원하는 폴더, 가급적이면 Python 스크립트가 저장된 폴더에 복사합니다.

구현

설치 프로세스가 완료되면 실제 코드를 구현할 차례입니다.

다음 코드를 고려하십시오.

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)

clr 모듈을 사용하여 OpenHardwareMonitorLib.dll이라는 .NET DLL과 인터페이스할 수 있습니다. 우리는 Python 코드에서 해당 기능과 특성을 계속 사용할 수 있으며 마지막으로 CPU 및 보고 싶은 다른 구성 요소의 온도를 읽을 수 있습니다.

각 속성의 의미와 기능에 대한 자세한 개요는 Github에서 OpenHardwareMonitor의 문서를 참조할 수 있습니다.

다른 사용자 지정 기능의 경우 코드를 살펴보고 코드의 내부 작업을 더 잘 이해하고 통찰력을 얻는 것이 좋습니다.

감시 장치

코드를 작성한 후에는 프로그램을 실행할 차례입니다. 이 스크립트를 관리자로 실행해야 합니다. 그렇지 않으면 코드가 제대로 실행되지 않고 필요한 판독값을 올바르게 표시하지 못하거나 전혀 표시하지 않을 수 있습니다.

명령 프롬프트 또는 선택한 터미널을 열고 스크립트를 실행합니다. 위 코드의 경우 관리자로 실행하면 다음 출력이 표시됩니다.

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

관련 문장 - Python CPU