我想知道是否有办法在 python 中获取 CPU 和 GPU 温度。我已经找到了一种适用于 Linux 的方法(使用 psutil.sensors_temperature()
),我想找到一种适用于 Windows 的方法。
一种查找 Mac OS 温度的方法也将不胜感激,但我主要想要一种用于 Windows 的方法。
我更喜欢只使用 python 模块,但 DLL 和 C/C++ 扩展也完全可以接受!
当我尝试执行以下操作时,我没有得到:
import wmi
w = wmi.WMI()
prin(w.Win32_TemperatureProbe()[0].CurrentReading)
当我尝试执行以下操作时,出现错误:
import wmi
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print(temperature_info.CurrentTemperature)
错误:
wmi.x_wmi: <x_wmi: Unexpected COM Error (-2147217396, 'OLE error 0x8004100c', None, None)>
我听说过 OpenHardwareMoniter,但这需要我安装一些不是 python 模块的东西。我也宁愿不必以管理员身份运行脚本来获得结果。
我也可以使用 python 运行 windows cmd 命令,但我还没有找到返回 CPU 温度的命令。
更新:我发现了这个: https ://stackoverflow.com/a/58924992/13710015。我不知道如何使用它。当我尝试做: print(OUTPUT_temp._fields_)
时,我得到了
[('Board Temp', <class 'ctypes.c_ulong'>), ('CPU Temp', <class 'ctypes.c_ulong'>), ('Board Temp2', <class 'ctypes.c_ulong'>), ('temp4', <class 'ctypes.c_ulong'>), ('temp5', <class 'ctypes.c_ulong'>)]
注意:我真的不想以管理员身份运行它。如果我绝对必须这样做,我可以,但我不想这样做。
原文由 KetZoomer 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为没有直接的方法可以实现这一目标。一些 CPU 生产商不会提供
wmi
让您直接知道温度。您可以使用
OpenHardwareMoniter.dll
。使用动态库。首先,下载
OpenHardwareMoniter
。它包含一个名为OpenHardwareMonitorLib.dll
的文件(版本 0.9.6,2020 年 12 月)。安装模块
pythonnet
:下面的代码在我的电脑上运行良好(获取 CPU 温度):
要获取 GPU 温度,请将
c.Hardware[0]
更改为c.Hardware[1]
。将结果与:
注意:如果要获取CPU温度,需要以管理员身份运行。如果不是,您将只会获得
Load
的值。对于 GPU 温度,它可以在没有管理员权限的情况下工作(如在 Windows 10 21H1 上)。我从 中文博客 做了一些修改