답변
cputemp 라이브러리를 확인하십시오.
EDIT : Windows에서는 파이썬 WMI library을 사용하여 WMI를 사용하는 IronPython script으로 변환 할 수 있습니다.
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을 뺍니다.
나는 첫 번째 코드에 다음과 같은 오류가 파일 "
두 가지 방법 모두 시도 할 때 많은 오류 (OLE/COM)가 발생합니다. 왜 그럴지 모른다고 생각 해요? – Dan
WMI module + Open Hardware Monitor + its WMI interface described here을 사용하십시오.
샘플 코드 :
import wmi
w = wmi.WMI(namespace="root\OpenHardwareMonitor")
temperature_infos = w.Sensor()
for sensor in temperature_infos:
if sensor.SensorType==u'Temperature':
print(sensor.Name)
print(sensor.Value)
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이 아닌 항 및 제 "에 의해 주문하기"를 좋아하지 않는 그 어려운 방법을 발견, 그래서 몇 가지 멋진 문자열을해야했다 쿼리가 코어를 역순으로 리턴 할 때 순서를 올바로 지정하려면 형식을 지정하십시오. 이 방법을 고안 할 때까지 이것은 나를 당황하게했다.
하지만 Windows OS를 지원하지는 않습니다. –
내 하드웨어가 지원되지 않는다고 알려줍니다./ – rectangletangle
그럼 파이썬은 아마도 당신의 필요에 맞는 좋은 언어가 아닙니다. –