在python中访问CPU温度
我需要一个用python访问CPU温度的例子代码。
顺便说一下,我运行的是Windows 7。
15
5
我需要一个用python访问CPU温度的例子代码。
顺便说一下,我运行的是Windows 7。
使用WMI模块+Open Hardware Monitor + 其WMI接口在此描述。
示例代码。
下载 http://openhardwaremonitor.org/downloads/ 和 http://www.cputhermometer.com/ 并提取 OpenHardwareMonitorLib.dll 和 CPUThermometerLib.dll 并把它们放在一个目录中。
然后,你可以使用pythonnet模块来寻址.dlls,并提取这些程序提供的任何统计数据。不需要使用WMI,这需要程序在后台活动。
我写了一个小脚本(python 3.6.5)来显示系统上可用的每一个温度传感器,当然你可以很容易地修改这个脚本,用于其他传感器类型。你必须以管理员身份运行这个脚本。
以下是我系统上的输出。
关于进一步的文档(不过你应该能够从上面的代码中推断出你所需要的一切),请参考https://github.com/openhardwaremonitor/openhardwaremonitor/(或cputhermometer,在网站上)的源代码,当你用python使用这些功能和方法时,是相同的。
我没有在其他电脑上测试过,所以不同的处理器架构可能功能不尽相同。
确保在测量之间运行
Hardware[x].Update()
(如果需要的话,还有SubHardware[x].Update()
)。你可以使用pywin32来访问本地Windows API。我相信,如果你的主板驱动程序的制造商通过他们的驱动程序注册了一个WMI数据提供者,应该可以查询Windows API的CPU温度。假设是这样的话,你可以下载ars回答中提到的pywin32扩展和Python WMI模块,然后按以下步骤操作。
看一下ars'答案中的IronPython脚本,似乎也有另一种方法,使用不同的WMI对象来实现。使用相同的API和方法,你可以尝试用以下方法接收温度值
显然,它应该返回以开尔文为单位的温度值,因此要接收摄氏度,我想你只需用这个值除以10,然后减去~273。
请查看cputemp库。
编辑:在WINDOWS上,你也许可以转换这个IronPython脚本,它使用pythonWMI库来使用WMI。
eadmaster提供的代码可能适用于OpenHardwareMonitor已编程的旧CPU,但我有一个Skylake i7 6700K CPU。OpenHardwareMonitor没有为我提供任何结果。然而,这个程序有一个分叉,叫做CPU温度计,它是基于OpenHardwareMonitor的,它*确实能识别我的CPU。
在追寻如何通过Python获得CPU温度的过程中,我换成了IronPython,以便能够访问.Net框架,并能方便地访问其他性能数据,但要想知道如何为vanilla Python 2.7改造它应该是相当容易的(只要运行CPU Thermometer而不是OpenHardwareMonitor,并将你的命名空间改为 "root\CPUThermometer"?有这么简单吗?)。)
输出样本。
我发现这个查询不是标准的SQL,不喜欢 "Order By "子句,所以我不得不做一些花哨的字符串格式化来获得正确的顺序,因为这个查询以相反的顺序返回核心。这让我有点困惑,直到我想出了这个办法。