在python中访问CPU温度

我需要一个示例代码来访问python中的CPU温度

我正在运行Windows 7,顺便说一句。

Solutions Collecting From Web of "在python中访问CPU温度"

使用WMI模块 + 打开硬件监视器+此处所述的WMI界面 。

示例代码:

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) 

您可以使用pywin32来访问本地Windows API。 如果主板驱动程序的制造商通过驱动程序注册了WMI数据提供程序,我相信应该可以查询Windows API的CPU温度。 假设是这种情况,你可以下载python32扩展和在答案中提到的Python WMI模块 ,然后按照以下步骤进行操作:

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

在ars的答案中查看IronPython脚本,似乎还有另一种方法来使用不同的WMI对象。 使用相同的API和方法,您可以尝试接收温度值

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

这显然应该返回十分之一开尔文的温度值,从而得到摄氏度的程度,我想你只是把这个值除以10并减去〜273。

看看cputemp库。

编辑:在Windows上,您可能能够转换使用WMI使用Python WMI库这IronPython脚本 。

eadmaster提供的代码可能适用于OpenHardwareMonitor已经编程的旧CPU,但是我有一个Skylake i7 6700K CPU。 OpenHardwareMonitor没有为我提供任何结果。 然而,这个程序叫做CPU温度计 ,基于OpenHardwareMonitor,它可以识别我的CPU。

在追逐如何通过Python获取CPU临时工时,我切换到了IronPython,以便访问.Net框架,并且可以轻松访问其他性能数据,但是应该很容易找出如何适应它的香草味Python 2.7(只是运行CPU温度计而不是OpenHardwareMonitor,并将你的名字空间改为“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,不喜欢“Order By”子句,所以我不得不做一些奇特的字符串格式化,以正确的顺序,因为查询返回的核心以相反的顺序。 这让我感到困惑,直到我设计出这种方式。