2010-07-16 2 views

답변

2

cputemp 라이브러리를 확인하십시오.

EDIT : Windows에서는 파이썬 WMI library을 사용하여 WMI를 사용하는 IronPython script으로 변환 할 수 있습니다.

+0

하지만 Windows OS를 지원하지는 않습니다. –

+0

내 하드웨어가 지원되지 않는다고 알려줍니다./ – rectangletangle

+0

그럼 파이썬은 아마도 당신의 필요에 맞는 좋은 언어가 아닙니다. –

3

pywin32을 사용하여 기본 Windows API에 액세스 할 수 있습니다. 메인 보드 드라이버 제조업체가 드라이버를 통해 WMI 데이터 공급자를 등록하면 CPU 온도를 Windows API에 쿼리 할 수 ​​있어야한다고 생각합니다.

import wmi 
w = wmi.WMI() 
print w.Win32_TemperatureProbe()[0].CurrentReading 

를 또 다른 방법이있을 것 같습니다 ARS의 대답에 IronPython의 스크립트를 보면이 사건은 당신이 pywin32 extensions 및 ARS로이 질문에 대해 언급 Python WMI module을 다운로드 한 후 다음과 같이 수행 할 수있다 가정 다른 WMI 개체를 사용하여이 작업을 수행하십시오. 당신은 섭씨 학위를받을 따라서, 분명히 켈빈의 십분의 온도 값을 반환해야합니다

w = wmi.WMI(namespace="root\wmi") 
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0] 
print temperature_info.CurrentTemperature 

와 온도 값을 수신 시도 할 수 방법 같은 API를 사용하는 것 같아요 당신이 10로이 값을 나누고 ~ 273을 뺍니다.

+2

나는 첫 번째 코드에 다음과 같은 오류가 파일 ""run_nodebug 파일 라인 (244), "", 3 호선, IndexError에 : 중리스트 인덱스 범위 – rectangletangle

+0

두 가지 방법 모두 시도 할 때 많은 오류 (OLE/COM)가 발생합니다. 왜 그럴지 모른다고 생각 해요? – Dan

0

OpenHardwareMonitor가 프로그램되어 이전의 CPU를 작동 할 수 있습니다 eadmaster에서 제공하는 코드,하지만 난 스카이 레이크 I7의 6700K의 CPU가 있습니다. OpenHardwareMonitor는 나에게 결과를 제공하지 않았습니다. 그러나 OpenHardwareMonitor를 기반으로하는 CPU Thermometer이라는 프로그램이 있습니다. 이 내 CPU를 인식합니다.

파이썬을 통해 CPU temps를 얻는 방법을 추적하면서 .Net 프레임 워크에 액세스하고 다른 성능 데이터에 쉽게 액세스 할 수 있도록 IronPython으로 전환했지만 역전 방법을 쉽게 이해할 수 있어야합니다 바닐라 파이썬 2.7 (OpenHardwareMonitor 대신 CPU 온도계를 실행하고 네임 스페이스를 "root \ CPUThermometer"로 변경하면 간단할까요?).

# 
# CPU Temp --REQUIRES CPU TEMPERATURE TO BE RUNNING!-- 
# 
import clr 
clr.AddReference('System.Management') 
from System.Management import (ManagementScope, ManagementObject, ManagementObjectSearcher, WqlObjectQuery) 

scope = ManagementScope("root\CPUThermometer") 

searcher = ManagementObjectSearcher(scope, 
    WqlObjectQuery("SELECT * FROM Sensor Where SensorType LIKE 'Temperature'"), None) 

mo = ManagementObject() 

print "\n" 
print "    Temp  Min  Max" 

strout = str(' ') 

for mo in searcher.Get(): 
    strout = '{0} {1} C {2} C {3} C\n{4}'.format(mo["Name"], mo["Value"], mo["Min"], mo["Max"], strout) 

print strout 

샘플 출력 :

D:\IronPython 2.7>ipy64 c:\users\neamerjell\desktop\test.py 


       Temp  Min  Max 
CPU Core #1 21.0 C 20.0 C 37.0 C 
CPU Core #2 23.0 C 21.0 C 39.0 C 
CPU Core #3 21.0 C 20.0 C 32.0 C 
CPU Core #4 21.0 C 20.0 C 36.0 C 

나는 쿼리가 매우 표준 SQL이 아닌 항 및 제 "에 의해 주문하기"를 좋아하지 않는 그 어려운 방법을 발견, 그래서 몇 가지 멋진 문자열을해야했다 쿼리가 코어를 역순으로 리턴 할 때 순서를 올바로 지정하려면 형식을 지정하십시오. 이 방법을 고안 할 때까지 이것은 나를 당황하게했다.