我一直在尝试使用Python脚本来显示我的硬件中的CPU,GPU和其他可用传感器的温度,但我没有找到任何有用的东西.
我尝试使用WMI来获取这些值,但我的处理器显然不受支持.
我使用的代码是:
import wmi
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print temperature_info.CurrentTemperature
Run Code Online (Sandbox Code Playgroud)
我从另一个stackoverflow线程获得,我得到错误Traceback(最近一次调用最后):
File "C:/Users/Joe/Desktop/test.py", line 3, in <module>
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
File "C:\Python27\lib\site-packages\wmi.py", line 819, in query
handle_com_error ()
File "C:\Python27\lib\site-packages\wmi.py", line 241, in handle_com_error
raise klass (com_error=err)
x_wmi: <x_wmi: Unexpected COM Error (-2147217396, 'OLE error 0x8004100c', None, None)>
Run Code Online (Sandbox Code Playgroud)
根据Microsoft支持,这意味着Not Supported (0x8004100C)
我已经尝试在cmd.exe窗口中运行此代码的命令行版本作为管理员运行,但我得到了同样的错误.
有没有其他方法可以访问CPU和GPU温度?
PS:我的操作系统是Windows 10,我的CPU是AMD FX-8350.我不确定我的操作系统或我的CPU是否有错误.
基本上,我想用Python读取CPU温度。请用通俗易懂的方式解释一下,因为我以前从未在 Windows 上这样做过,也没有使用过wmi.
这就是我现在所拥有的:
import wmi
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print temperature_info.CurrentTemperature
Run Code Online (Sandbox Code Playgroud)
(我从这个线程中得到了这段代码:Accessing CPU temp in python)
但是,在运行脚本时,我收到此错误:
Traceback (most recent call last):
File "C:\Users\Ryan\Desktop\SerialSystemMonitor", line 4, in <module>
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
File "C:\Python27\lib\site-packages\wmi.py", line 819, in query
handle_com_error ()
File "C:\Python27\lib\site-packages\wmi.py", line 241, in handle_com_error
raise klass (com_error=err)
x_wmi: <x_wmi: Unexpected COM Error (-2147217396, 'OLE error 0x8004100c', None, None)>
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能让它发挥作用?
我正在尝试执行一个Python脚本,该脚本使用Python For .Net(https://github.com/pythonnet/pythonnet)来加载名为"Kratos_3.dll"的C#库,该库与脚本位于同一文件夹中但文件无法找到.
我使用"pip install pythonnet"安装了clr.
这是我的脚本:
import clr
import sys
sys.path.insert(0,"C:\\dev\\proj_1\\")
clr.AddReference("Kratos_3")
Run Code Online (Sandbox Code Playgroud)
我一直在收到错误
FileNotFoundException: Unable to find assembly 'Kratos_3. at Python.Runtime.CLRModule.AddReference(String name)
Run Code Online (Sandbox Code Playgroud)
当我使用IronPython运行它时,它可以工作,但我想使用常规Python 2.7来实现这一点,我需要做什么?
我发布了这个问题,询问如何在 Windows 10 上获取 CPU 和 GPU 温度:Get CPU and GPU Temp using Python Windows。对于那个问题,我没有包含没有管理员访问权限的限制(至少在我第一次发布答案时,以及之后的相当一段时间)。然后我修改了我的问题以使需要管理员访问权限的答案无效(这是唯一有效的答案)。一个 mod 回滚到我问题的先前版本,并要求我发布一个新问题,所以我已经这样做了。
我想知道是否有办法在 python 中获取 CPU 和 GPU 温度。我已经找到了适用于 Linux 的方法(使用psutil.sensors_temperature),我想找到适用于 Windows 的方法。
信息:
操作系统:Windows 10
Python:Python 3.8.3 64 位(所以没有 32 位 DLL)
以下是我尝试过的一些东西:
当我尝试执行以下操作时,我得到 None (从这里 - /sf/answers/228498371/):
import wmi
w = wmi.WMI()
prin(w.Win32_TemperatureProbe()[0].CurrentReading)
Run Code Online (Sandbox Code Playgroud)
当我尝试执行以下操作时,出现错误(来自此处 - /sf/answers/228498371/):
import wmi
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print(temperature_info.CurrentTemperature)
Run Code Online (Sandbox Code Playgroud)
错误:
wmi.x_wmi: <x_wmi: Unexpected COM Error (-2147217396, 'OLE error …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法在 python 中获取 CPU 和 GPU 温度。我已经找到了适用于 Linux 的方法(使用psutil.sensors_temperature()),我想找到适用于 Windows 的方法。
一种找到 Mac OS 温度的方法也将受到赞赏,但我主要想要一种适用于 Windows 的方法。
我更喜欢只使用可通过 pip 下载的 python 模块,但我可以下载额外的东西。如果您的答案需要额外的文件,我希望它不需要太多文件。
当我尝试执行以下操作时,我得到 None:
import wmi
w = wmi.WMI()
prin(w.Win32_TemperatureProbe()[0].CurrentReading)
Run Code Online (Sandbox Code Playgroud)
当我尝试执行以下操作时,出现错误:
import wmi
w = wmi.WMI(namespace="root\wmi")
temperature_info = w.MSAcpi_ThermalZoneTemperature()[0]
print(temperature_info.CurrentTemperature)
Run Code Online (Sandbox Code Playgroud)
错误:
wmi.x_wmi: <x_wmi: Unexpected COM Error (-2147217396, 'OLE error 0x8004100c', None, None)>
Run Code Online (Sandbox Code Playgroud)
我听说过 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 …Run Code Online (Sandbox Code Playgroud) python ×5
temperature ×3
windows ×3
cpu ×2
python-2.7 ×2
python-3.x ×2
windows-10 ×2
wmi ×2
.net ×1
ironpython ×1
python.net ×1