相关文章推荐
另类的饼干  ·  地理数据和实体—Wolfram ...·  1 周前    · 
低调的沙发  ·  菲律宾的启示:该给人还是给狗接种狂犬病疫苗? ...·  1 年前    · 
呐喊的煎鸡蛋  ·  TrendForce:「2023年全球通路c ...·  1 年前    · 
活泼的蚂蚁  ·  新闻动态-中央民族大学附属中学·  1 年前    · 
小眼睛的牙膏  ·  刘洪愧:为什么消费在GDP中的占比不高_我国 ...·  1 年前    · 
Code  ›  python - 使用 Python Windows 获取 CPU 和 GPU 温度 -
python cpu温度
https://segmentfault.com/q/1010000042843737
侠义非凡的苦瓜
3 年前
segmentfault segmentfault
注册登录
问答 博客 标签 活动
发现
✓ 使用“Bing”搜本站 使用“Google”搜本站 使用“百度”搜本站 站内搜索
注册登录
  1. 首页
  2. 问答
  3. Stack Overflow 翻译
  4. 问答详情

使用 Python Windows 获取 CPU 和 GPU 温度

社区维基
1
发布于
2022-11-17
新手上路,请多包涵

我想知道是否有办法在 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 许可协议

Stack Overflow 翻译 python python-3.x windows windows-10
阅读 1.1k
2 个回答
得票 最新
社区维基
1
发布于
2022-11-17
✓ 已被采纳

我认为没有直接的方法可以实现这一目标。一些 CPU 生产商不会提供 wmi 让您直接知道温度。

您可以使用 OpenHardwareMoniter.dll 。使用动态库。

首先,下载 OpenHardwareMoniter 。它包含一个名为 OpenHardwareMonitorLib.dll 的文件(版本 0.9.6,2020 年 12 月)。

安装模块 pythonnet :

 pip install pythonnet

下面的代码在我的电脑上运行良好(获取 CPU 温度):

 import clr # the pythonnet module.
clr.AddReference(r'YourdllPath')
# e.g. clr.AddReference(r'OpenHardwareMonitor/OpenHardwareMonitorLib'), without .dll
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 "/temperature" in str(c.Hardware[0].Sensors[a].Identifier):
            print(c.Hardware[0].Sensors[a].get_Value())
            c.Hardware[0].Update()

要获取 GPU 温度,请将 c.Hardware[0] 更改为 c.Hardware[1] 。

将结果与:

注意:如果要获取CPU温度,需要以管理员身份运行。如果不是,您将只会获得 Load 的值。对于 GPU 温度,它可以在没有管理员权限的情况下工作(如在 Windows 10 21H1 上)。

我从 中文博客 做了一些修改

原文由 jizhihaoSAMA 发布,翻译遵循 CC BY-SA 4.0 许可协议

社区维基
1
发布于
2022-11-17

我找到了一个非常好的模块来获取 NVIDIA GPU 的温度。

pip 安装 gputil

打印温度的代码

import GPUtil
gpu = GPUtil.getGPUs()[0]
print(gpu.temperature)
 
推荐文章
另类的饼干  ·  地理数据和实体—Wolfram Documentation
1 周前
低调的沙发  ·  菲律宾的启示:该给人还是给狗接种狂犬病疫苗?_手机新浪网
1 年前
呐喊的煎鸡蛋  ·  TrendForce:「2023年全球通路client SSD固態硬碟」出貨量突破1.18億台,「Kingston 金士頓」以34%的市占率穩居龍頭,「ADATA 威剛」以11%的市占率排名第二,「L
1 年前
活泼的蚂蚁  ·  新闻动态-中央民族大学附属中学
1 年前
小眼睛的牙膏  ·  刘洪愧:为什么消费在GDP中的占比不高_我国_投资_比重
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号