CPU温度获取

本文探讨了在Windows环境下使用C#及Python获取CPU温度的方法,包括利用WMI接口及psutil模块实现,并对比了不同Python版本间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CPU温度获取

总结

Windows和linux采用的函数不同;
x86与Arm采用的函数不同;
python3.7和python3.8不同,目前;
在这里插入图片描述

高温试验下CPU温度

CPU温度会高很多,高出环境温度20度左右,还得空气流通,不能积热导致温度上升,不然设备异常概率大。

在这里插入图片描述

后续

需解决超温持续一段时间后,边缘计算设备如何降低负载,以防超温。

发现问题

root\WMI每次结果相同

我尝试了以下代码来获取cpu温度(在管理模式下运行):
public static List Temperatures
{
get
{
List result = new List();
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@“root\WMI”, “SELECT * FROM MSAcpi_ThermalZoneTemperature”);
foreach (ManagementObject obj in searcher.Get())
{
double temperature = Convert.ToDouble(obj[“CurrentTemperature”].ToString());
temperature = (temperature - 2732) / 10.0;
result.Add(new Temperature { CurrentValue = temperature, InstanceName = obj[“InstanceName”].ToString() });
}
return result;
}
}

每次我运行代码,结果是25。发现每次结果相同;

python问题

psutil模块表示获取本机的硬件信息,发现不错;
但获取CPU温度方面,没看到3.8版本的支持
python3.7和python3.8不同,
目前发现3.8下引用wmi提示无win32api,安装后pycharm在编译阶段还是报错,python自带编辑器不报错,但运行报错,查win32api无3.8版本的安装软件,估计是这个原由;
#windows查CPU温度
import wmi
import win32api

有效

声明:

PersistentSettings settings =new PersistentSettings();

UpdateVisitor updateVisitor = new UpdateVisitor();

初始化config配置文件,详情见Bin目录Debug/ReplaseOpenHardwareMonitor.config文件

settings.Load(Path.ChangeExtension(
Application.ExecutablePath, “.config”));

初始化Computer对象

Computer computer= new Computer(settings);

调用open方法

conputer.open();

获取cpu温度:

             StringBuilder str = new StringBuilder();

           computer.Accept(updateVisitor);
            for (int i = 0; i < computer.Hardware.Length; i++)
            {

                //循环找到HardwareType为cpu
                if (computer.Hardware[i].HardwareType == HardwareType.CPU)
                {
                    for (int j = 0; j < computer.Hardware[i].Sensors.Length;j++ )
                    {

                        //找到温度
                        if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature)
                        {

                         //获取到cpu核心
                          str.Append(computer.Hardware[i].Sensors[j].Name);
                          str.Append(" ");

                          //这里就是cpu温度了
                          str.Append(computer.Hardware[i].Sensors[j].Value.ToString());
                          str.Append(" ");
                        }
                    }
                }
            }

Console.WriteLine(str.ToString());

这样子就获取到每个cpu核心的温度了。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值