当前位置: 首页 > news >正文

Python获取CPU温度

本文的主要目的是演示如何借助 Python 中的 pythonnet 库读取和显示 CPU 温度。


Python获取CPU温度

根据您正在设计的应用程序类型,您可能希望监视运行该程序的机器的资源。

由于多种原因,可能会出现这种情况。 也许您需要您的程序在系统资源达到特定阈值时以特定方式运行。

用例可能因程序而异。

在这些系统资源中,CPU 温度在特定应用程序和用例中具有重要意义。

也许您的程序使 CPU 过度紧张并占用了许多不必要的资源。 您可能希望采取措施缓解此问题,因此您可能需要监控不同机器组件的温度,CPU 就是其中之一。

为了解决这个具体问题,我们可以使用 OpenHardwareMonitor 提供的 DLL(动态链接库)。

本节可分为以下几个部分:

  1. 安装
  2. 代码实现
  3. 监视器

安装

首先,我们需要下载 pythonnet 才能与 DLL 交互。 为此,请在终端中执行以下命令。

pip install pythonnet

这将给出以下输出:

Collecting pythonnetDownloading pythonnet-3.0.0.post1-py3-none-any.whl (279 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 279.4/279.4 kB 639.3 kB/s eta 0:00:00
Requirement already satisfied: clr-loader<0.3.0,>=0.2.2 in c:\program files\python310\lib\site-packages (from pythonnet) (0.2.4)
Requirement already satisfied: cffi>=1.13 in c:\program files\python310\lib\site-packages (from clr-loader<0.3.0,>=0.2.2->pythonnet) (1.15.1)
Requirement already satisfied: pycparser in c:\program files\python310\lib\site-packages (from cffi>=1.13->clr-loader<0.3.0,>=0.2.2->pythonnet) (2.21)
Installing collected packages: pythonnet
Successfully installed pythonnet-3.0.0.post1

成功安装 pythonnet 后,就该下载 OpenHardwareMonitor 了。 从这里下载软件。

下载完成后,安装应用程序。 之后:

  • 转到安装 OpenHardwareMonitor 的目录。
  • 从文件夹中的文件中找到 OpenHardwareMonitorLib.dll。
  • 复制到你想要的文件夹,最好是你的 python 脚本的存储位置。

代码实现

安装过程完成后,就该实现实际的代码了。

考虑以下代码:

import clr #package pythonnet, not clropenhardwaremonitor_sensortypes = ['Voltage','Clock','Temperature','Load','Fan','Flow','Control','Level','Factor','Power','Data','SmallData']def initialize_openhardwaremonitor():file = 'D:\\Path_TO_DLL\\OpenHardwareMonitorLib.dll'clr.AddReference(file)from OpenHardwareMonitor import Hardwarehandle = Hardware.Computer()handle.MainboardEnabled = Truehandle.CPUEnabled = Truehandle.RAMEnabled = Truehandle.GPUEnabled = Truehandle.HDDEnabled = Truehandle.Open()return handledef fetch_stats(handle):for i in handle.Hardware:i.Update()for sensor in i.Sensors:parse_sensor(sensor)for j in i.SubHardware:j.Update()for subsensor in j.Sensors:parse_sensor(subsensor)def parse_sensor(sensor):hardwaretypes = openhardwaremonitor_hwtypesif sensor.Value is not None:if str(sensor.SensorType) == 'Temperature':print(u"%s %s Temperature Sensor #%i %s - %s\u00B0C" % (hardwaretypes[sensor.Hardware.HardwareType], sensor.Hardware.Name, sensor.Index, sensor.Name, sensor.Value))if __name__ == "__main__":print("OpenHardwareMonitor:")HardwareHandle = initialize_openhardwaremonitor()fetch_stats(HardwareHandle)

使用 clr 模块,我们可以与名为 OpenHardwareMonitorLib.dll 的 .NET DLL 进行交互。 我们可以在我们的 Python 代码中继续使用它的功能和属性,最终读取我们可能希望查看的 CPU 和其他组件的温度。

关于每个属性代表什么以及作用的详细介绍,可以参考Github上OpenHardwareMonitor的文档。

对于任何其他自定义功能,建议查看代码以更好地理解和洞察代码的内部工作原理。

监视器

编写完代码后,就该执行程序了。 请记住,您需要以管理员身份运行此脚本; 否则,代码将无法正常运行,并且可能无法正确显示或根本不显示必要的读数。

打开命令提示符或您选择的任何终端并执行脚本。 对于上面的代码,以管理员身份运行时会显示以下输出:

OpenHardwareMonitor:                                                                                                    CPU Intel Core i7-4800MQ Temperature Sensor #0 CPU Core #1 - 60.0°C                                                     CPU Intel Core i7-4800MQ Temperature Sensor #1 CPU Core #2 - 66.0°C                                                     CPU Intel Core i7-4800MQ Temperature Sensor #2 CPU Core #3 - 58.0°C                                                     CPU Intel Core i7-4800MQ Temperature Sensor #3 CPU Core #4 - 58.0°C                                                     CPU Intel Core i7-4800MQ Temperature Sensor #4 CPU Package - 66.0°C                                                     GpuNvidia NVIDIA Quadro K1100M Temperature Sensor #0 GPU Core - 43.0°C                                                  HDD ST500LT012-9WS142 Temperature Sensor #0 Temperature - 37.0°C
http://www.lryc.cn/news/112652.html

相关文章:

  • 后端整理(MySql)
  • HashSet的详细介绍
  • 【SCI征稿】JCR1区,中科院2区,有关大数据、人工智能、机器学习的应用研究均可
  • 【UE】AI导航,多个导航物体无法走到同一终点问题
  • 途游游戏 x 极狐GitLab “通关” DevOps :单元测试从无到优,覆盖率 0→80%
  • 【云原生】Docker-Compose全方面学习
  • 基于 Redux + TypeScript 实现强类型检查和对 Json 的数据清理
  • HIVE语法优化之Join优化
  • 如何申请境内金融信息服务报备
  • VS code:Task
  • 《Java-SE-第三十章》之哲学家就餐问题
  • 关于接口测试用例设计的一些思考
  • gin和gorm框架安装
  • 今天小编继续给大家分享五款高效的电脑宝藏软件
  • SQL Server数据库如何添加mysql链接服务器(Windows系统)
  • scala连接mysql数据库
  • datax-web登陆时出现账号密码错误
  • Redis 和 MySQL如何保证数据一致性
  • VR虚拟仿真技术在道路桥梁中有哪些具体应用?
  • 如何找到死锁的线程?_java都学什么
  • MFC遍历目录包括子目录下所有文件、特定类型文件
  • Kubernetes 集群calico网络故障排查思路
  • OBS视频视频人物实时扣图方法(四种方式)
  • DROP USER c##xyt CASCADE > ORA-01940: 无法删除当前连接的用户
  • 【JAVA】-【IO流】
  • PoseFormer:基于视频的2D-to-3D单人姿态估计
  • Fortinet发布2023年第二季度财报
  • 智慧消防 | 气体灭火系统压力在线监测正当其时
  • 并查集练习 — 扩展问题(二)
  • iTOP-i.MX8MM开发板添加 isb 转串口设备驱动