首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows11上监控python的CPU温度

在windows11上监控python的CPU温度
EN

Stack Overflow用户
提问于 2022-03-22 22:22:34
回答 1查看 382关注 0票数 0

我编写了一个代码来监控内存使用情况、CPU内存使用情况和CPU温度--我使用了psutil和WMI,当我将windows 10更新到window 11时,代码运行得很好--它不起作用。我已经检查了python解释器它在3.10上

我得到了输出/错误消息:

代码语言:javascript
复制
C:\Users\jeries\PycharmProjects\PP1\venv\Scripts\python.exe C:/Users/jeries/PycharmProjects/PP1/study.py
The CPU usage is:  47.1
RAM memory % used: 54.0
Traceback (most recent call last):
  File "C:\Users\jeries\PycharmProjects\PP1\venv\lib\site-packages\wmi.py", line 880, in query
    return self._namespace.query(wql, self, fields)
  File "C:\Users\jeries\PycharmProjects\PP1\venv\lib\site-packages\wmi.py", line 1072, in query
    return [ _wmi_object(obj, instance_of, fields) for obj in self._raw_query(wql) ]
  File "C:\Users\jeries\PycharmProjects\PP1\venv\lib\site-packages\wmi.py", line 1072, in <listcomp>
    return [ _wmi_object(obj, instance_of, fields) for obj in self._raw_query(wql) ]
  File "C:\Users\jeries\PycharmProjects\PP1\venv\lib\site-packages\win32com\client\dynamic.py", line 324, in __getitem__
    return self._get_good_object_(self._enum_.__getitem__(index))
  File "C:\Users\jeries\PycharmProjects\PP1\venv\lib\site-packages\win32com\client\util.py", line 41, in __getitem__
    return self.__GetIndex(index)
  File "C:\Users\jeries\PycharmProjects\PP1\venv\lib\site-packages\win32com\client\util.py", line 62, in __GetIndex
    result = self._oleobj_.Next(1)
pywintypes.com_error: (-2147217372, 'OLE error 0x80041024', None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\jeries\PycharmProjects\PP1\study.py", line 30, in <module>
    temperature_infos = w.Sensor()
  File "C:\Users\jeries\PycharmProjects\PP1\venv\lib\site-packages\wmi.py", line 882, in query
    handle_com_error()
  File "C:\Users\jeries\PycharmProjects\PP1\venv\lib\site-packages\wmi.py", line 258, in handle_com_error
    raise klass(com_error=err)
wmi.x_wmi: <x_wmi: Unexpected COM Error (-2147217372, 'OLE error 0x80041024', None, None)>

Process finished with exit code 1

我试过这样做:

代码语言:javascript
复制
w = wmi.WMI(namespace="root\openHardwareMonitor")
temperature_infos = w.Sensor()
for sensor in temperature_infos:
    if sensor.SensorType == u'Temperature':
        print(sensor.Name)
        print(sensor.Value)

不起作用--它说w.Senosor()“没有找到文档”

这是我目前的代码:

代码语言:javascript
复制
import os
import psutil
import wmi


def avg(value_list):
    num = 0
    length = len(value_list)
    for val in value_list:
        num += val
    return num / length


# Calling psutil.cpu_precent() after 2 seconds
print('The CPU usage is: ', psutil.cpu_percent(2))

print('RAM memory % used:', psutil.virtual_memory()[2])
# have the open hardware monitor opened
w = wmi.WMI(namespace="root\\OpenHardwareMonitor")
sensors = w.Sensor()
cpu_temps = []
gpu_temp = 0
for sensor in sensors:
    if sensor.SensorType == u'Temperature' and not 'GPU' in sensor.Name:
        cpu_temps += [float(sensor.Value)]
    elif sensor.SensorType == u'Temperature' and 'GPU' in sensor.Name:
        gpu_temp = sensor.Value



print("Avg CPU: {}".format(avg(cpu_temps)))
print("GPU: {}".format(gpu_temp))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-04 19:25:11

OpenHardwareMonitor可以生成日志(选项/日志传感器)

日志名为OpenHardwareMonitorLog-YYYY-MM-DD.csv

因此,我们的想法是预先启动OpenHardwareMonitor (可以通过预定的任务+子进程执行,或者在启动时自动执行),并在文件的最后一行中检索正确的列:

代码语言:javascript
复制
#Code
from datetime import date
while 1 == 1:

    #Génère le nom du log
    now = date.today()
    infile = r"C:\OpenHardwareMonitor\OpenHardwareMonitorLog-" + now.strftime("%Y-%m-%d") + ".csv"
    
    #Ouvre en lecture seule
    with open(infile, "r") as f:

        f = f.readlines()[-1]    #Lis la dernière ligne
        output = f.split(',')    # Sépare via les ","
        print(output[10])        # 10 = Colonne T°CPU Core #1

编辑:

您必须通过查看日志来找到您的列号,它对我来说是10,但是它必须能够根据您的配置更改.

我刚刚开始,脚本应该能够通过扫描前2行并用它的名称确定正确的列来改进;-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71579624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档