使用Python窗口获取CPU和GPU温度

使用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

我想知道是否有办法在python中获得CPU和GPU的温度。我已经为Linux找到了一种方法(使用),我想为Windows找到一种方法

如果能找到Mac操作系统的温度,我也会很感激,但我主要想要一个windows的方法

我更喜欢只使用可通过pip下载的python模块,但我可以下载额外的东西。如果你的答案需要额外的文件,我宁愿它不需要太多的文件

当我尝试执行以下操作时,没有得到任何结果:

导入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()