Python获取CPU温度
本文的主要目的是演示如何借助 Python 中的 pythonnet 库读取和显示 CPU 温度。
Python获取CPU温度
根据您正在设计的应用程序类型,您可能希望监视运行该程序的机器的资源。
由于多种原因,可能会出现这种情况。 也许您需要您的程序在系统资源达到特定阈值时以特定方式运行。
用例可能因程序而异。
在这些系统资源中,CPU 温度在特定应用程序和用例中具有重要意义。
也许您的程序使 CPU 过度紧张并占用了许多不必要的资源。 您可能希望采取措施缓解此问题,因此您可能需要监控不同机器组件的温度,CPU 就是其中之一。
为了解决这个具体问题,我们可以使用 OpenHardwareMonitor 提供的 DLL(动态链接库)。
本节可分为以下几个部分:
- 安装
- 代码实现
- 监视器
安装
首先,我们需要下载 pythonnet 才能与 DLL 交互。 为此,请在终端中执行以下命令。
pip install pythonnet
这将给出以下输出:
Collecting pythonnet
Downloading 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 clr
openhardwaremonitor_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 Hardware
handle = Hardware.Computer()
handle.MainboardEnabled = True
handle.CPUEnabled = True
handle.RAMEnabled = True
handle.GPUEnabled = True
handle.HDDEnabled = True
handle.Open()
return handle
def 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_hwtypes
if 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
相关文章
使用 Python 将文件上传到 Google 云端硬盘
发布时间:2023/06/15 浏览次数:136 分类:Python
-
This article demonstrates uploading file to Google Drive using Python.
Python 子进程捕获输出
发布时间:2023/06/15 浏览次数:136 分类:Python
-
The main aim of this article is to demonstrate how can the output of a subprocess be captured, stored and shown in Python.
Python 子进程在运行时读取标准输出
发布时间:2023/06/15 浏览次数:127 分类:Python
-
The main aim of this article is to demonstrate how to read the stdout of a subprocess being executed in Python.
使用 Python 获取 CPU 数量
发布时间:2023/06/15 浏览次数:173 分类:Python
-
This tutorial will teach you to determine the number of CPUs using Python.
Python 从网页中提取表格
发布时间:2023/06/15 浏览次数:50 分类:Python
-
本文的主要目的是演示如何在 Python 中使用 Pandas 和 lxml 从网页中提取表格。Python 从网页中提取表格
Python Antigravity 模块的用途
发布时间:2023/06/15 浏览次数:72 分类:Python
-
一个这样的 Python 彩蛋是反重力模块。让我们看看 Antigravity 模块做了什么,并看看其他几个例子。
不使用 pip 安装 Python 包
发布时间:2023/06/15 浏览次数:189 分类:Python
-
在本文中,我们将学习如何在 Python 中安装没有 pip 的库。 我们还将学习如何使用 conda 命令在 Python 中安装包。不使用 pip 命令安装 Python 库
在代码中安装 Python 模块
发布时间:2023/06/15 浏览次数:72 分类:Python
-
理想情况下,从 pip 安装 Python 模块非常方便; 为此,您必须在活动终端中输入 pip install module-name ,然后就完成了。
将 Gnuplot 与 Python 结合使用
发布时间:2023/06/15 浏览次数:131 分类:Python
-
Gnuplot 是一个开源命令行驱动的交互式数据绘图软件。 如果您是 Gnuplot 用户并且想在 Python 中使用它,那么您可以借助两个包 Gnuplot 和 PyGnuplot 轻松地做到这一点。