在这些系统资源中,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 错误 IsADirectoryError: [Errno 21] Is a directory 解决方法
  • 在 Python 中对元组列表进行排序
  • Python 错误 UnicodeDecodeError: 'utf-8' codec can't decode invalid continuation byte
  • Python从列表中随机选择N个元素
  • Python NameError: function is not defined 错误
  • Python 中 TypeError: Class() takes no arguments 错
  • Python 中 JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2
  • Python 打印不带括号的元组
  • 如何使用 Python 创建目录的 Zip 存档
  •