使用Python窗口获取CPU和GPU温度
我想知道是否有办法在python中获得CPU和GPU的温度。我已经为Linux找到了一种方法(使用),我想为Windows找到一种方法 如果能找到Mac操作系统的温度,我也会很感激,但我主要想要一个windows的方法 我更喜欢只使用可通过pip下载的python模块,但我可以下载额外的东西。如果你的答案需要额外的文件,我宁愿它不需要太多的文件 当我尝试执行以下操作时,没有得到任何结果:使用Python窗口获取CPU和GPU温度,python,python-3.x,windows,windows-10,Python,Python 3.x,Windows,Windows 10,我想知道是否有办法在python中获得CPU和GPU的温度。我已经为Linux找到了一种方法(使用),我想为Windows找到一种方法 如果能找到Mac操作系统的温度,我也会很感激,但我主要想要一个windows的方法 我更喜欢只使用可通过pip下载的python模块,但我可以下载额外的东西。如果你的答案需要额外的文件,我宁愿它不需要太多的文件 当我尝试执行以下操作时,没有得到任何结果: 导入wmi w=wmi.wmi() prin(w.Win32_TemperatureProbe()[0]。C
导入wmi
w=wmi.wmi()
prin(w.Win32_TemperatureProbe()[0]。CurrentReading)
当我尝试执行以下操作时,我得到一个错误:
导入wmi
w=wmi.wmi(命名空间=“root\wmi”)
温度\u信息=w.MSAcpi\u热区温度()[0]
打印(温度信息当前温度)
错误:
wmi.x\u wmi:
我听说过OpenHardwareMoniter,但这需要我安装一些不是python模块的东西。我还希望不必以管理员身份运行脚本来获得结果
我也可以用python运行windows cmd命令,但我还没有找到一个返回CPU温度的命令
更新:我找到了这个:。
不过我不知道怎么用它。
当我尝试执行以下操作时:打印(输出温度字段)
,我得到了
[('Board Temp',),('CPU Temp',),('Board Temp2',),('temp4',),('temp5',)]
注意:我真的不想以管理员的身份运行它。如果一定要的话,我可以,但我不愿意
编辑:我也可以在Python中使用C/C++扩展,或者在Python中使用任何方法来获取CPU温度。因此您可以使用
gpiozero
来获取温度
首先pip安装gpiozero
并从gpiozero导入cputtemperature
导入它并cpu=cputtemperature()打印(cpu.temperature)
代码:
希望你喜欢。:) 我认为没有直接的方法来实现这一点。一些CPU生产商不会提供
wmi
来直接让您知道温度
您可以使用OpenHardwareMoniter.dll
。使用动态库
首先,下载OpenHardwareMoniter
。它包含一个名为OpenHardwareMoniter.dll
的文件
安装模块pythonnet
:
pip install pythonnet
以下代码在我的电脑上运行良好(获取CPU温度):
要获取GPU温度,请将c.Hardware[0]
更改为c.Hardware[1]
将结果与以下内容进行比较:
注意:如果要获取温度,需要以管理员身份运行。否则,您将只获得Load
的值
我在使用windows,而不是RPi时,从一个中进行了一些更改,我得到了以下错误:gpiozero.exc.BadPinFactory:无法加载任何默认的pin工厂!可能会有帮助;我想你应该多读一些关于我总是被这类问题弄糊涂的文章。为什么您不能简单地使用平台提供的任何工具?你为什么觉得有必要重新发明轮子?我喜欢Python,在任何地方都可以使用它,最大化性能不是问题。测量CPU或GPU的温度不应该是性能关键的操作。这意味着运行一个外部命令来提取信息应该是可以接受的。我已经试着寻找这个命令。你找到了吗?我发现所有的都不起作用。请仔细阅读,我很感激你的回答。我可以下载dll和所有东西,但我的主要问题是它需要作为管理员运行。我可以下载更多的东西,但是有没有一种方法不需要以管理员的身份运行,或者这是不可能的?我认为这是最好的答案。只是想问一下与AMD CPU的兼容性如何。@KetZoomer我没有用AMD CPU测试它,但我认为
OpenHardwareMoniter.dll
可能包含关于AMD
@KetZoomer的API。我不知道在没有管理的情况下如何运行它,在博客中,作者没有提到管理,所以我想这可能取决于操作系统的版本。(如果你在Windows7上运行它,你可能不需要以管理员的身份运行。)以管理员的身份运行保存了我的代码!我从这里得到了:现在所有的传感器都工作了!
pip install pythonnet
import clr # the pythonnet module.
clr.AddReference(r'YourdllPath')
from OpenHardwareMonitor.Hardware import Computer
c = Computer()
c.CPUEnabled = True # get the Info about CPU
c.GPUEnabled = True # get the Info about GPU
c.Open()
while True:
for a in range(0, len(c.Hardware[0].Sensors)):
# print(c.Hardware[0].Sensors[a].Identifier)
if "/intelcpu/0/temperature" in str(c.Hardware[0].Sensors[a].Identifier):
print(c.Hardware[0].Sensors[a].get_Value())
c.Hardware[0].Update()