09年的老电脑说想看一下CPU温度,作为Python工程师,怎能安装X大师?
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
⛳️ 实战场景
作为一个老程序员,手里有那么几台老电脑也是理所应当的吧,这不最近又买了一台 09 年的旧机器,计划让其变为一个局域网小网盘服务器,但是问题出现了,我需要监测一下 CPU 温度,安装某大师显然是不现实的,我担心被安装了全家桶,毕竟旧电脑的硬盘和内存本就不富裕,万一被全家桶安排了,又要重新安装系统和软件,太浪费时间了。
那提炼一下需求吧,在不安装 X 大师的前提下,监测 CPU 温度。
⛳️ 编码调试
本篇博客的实例先从 wmi 模块开始学习,WMI 模块可以访问,配置,管理 Windows 的资源,例如操作进行,定时任务,远程启动计算机,获取事件日志,操作注册表,获取电脑 CPI 信息。
使用前先通过下述命令安装模块。
shell
pip install wmi
先学习一下 CPU 相关信息的示例代码:
```python import wmi
def get_cpu(): c = wmi.WMI()
cpu_list = c.Win32_Processor()
print(cpu_list)
if name == 'main': get_cpu() ```
上述代码先通过 wmi.WMI()
实例化了一个 wmi 对象,然后调用其 Win32_Processor()
方法,获取 CPU 处理器对象列表。
可以通过 cpu.Name
获取 CPU 型号。
python
for cpu in cpu_list:
print("CPU型号:", cpu.Name)
橡皮擦本地电脑的型号如下所示:
shell
CPU型号: Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
可以通过 cpu.NumberOfCores
获取核心数,更多参数可以通过 help()
函数获取。
wmi.Win32_ComputerSystem 获取电脑的制造商,机器型号
示例代码如下所示:
```python import wmi
w = wmi.WMI() obj = w.Win32_ComputerSystem()[0]
print(obj) ```
输出内容如下:
shell
instance of Win32_ComputerSystem
{
AdminPasswordStatus = 3;
AutomaticManagedPagefile = TRUE;
AutomaticResetBootOption = TRUE;
……
EnableDaylightSavingsTime = TRUE;
FrontPanelResetStatus = 3;
HypervisorPresent = FALSE;
InfraredSupported = FALSE;
KeyboardPasswordStatus = 3;
Manufacturer = "Colorful Technology And Development Co.,LTD";
Model = "Battle Axe C.xxxx";
Name = "DESKTOP-xxxxx";
……
UserName = "DESKTOP-xxxxx\\Admin";
WakeUpType = 6;
Workgroup = "WORKGROUP";
};
与该方法类似的有 wmi.Win32_OperatingSystem()
,获取操作系统相关信息。
```python if name == 'main': import wmi
w = wmi.WMI()
obj = w.Win32_OperatingSystem()[0]
print(obj)
```
wmi.Win32_DiskDrive 获取电脑磁盘信息
查看电脑硬盘分区,硬盘大小,硬盘制造商等数据,可以使用 wmi.Win32_DiskDrive()
方法进行操作,代码如下:
```python import wmi
w = wmi.WMI() disk = w.Win32_DiskDrive() print(disk) ```
wmi.Win32_Process 获取进程,wmi.Win32_Service 获取服务
进程和服务的获取,也可以直接调用 wmi
对象的方法,示例代码如下所示:
```python import wmi
w = wmi.WMI() p = w.Win32_Process()[0] print(p) ```
⛳️ 编码获取温度
原计划直接使用 wmi 获取 CPU 温度,实战之后发现部分电脑并未提供温度接口,只能进行曲线编码了。先做一下准备工作,下载 OpenHardwareMonitor
文件,目标获取其压缩包中的 OpenHardwareMonitorLib.dll
,即下文的引用文件。
下载地址:http://openhardwaremonitor.org/downloads/
获取温度的示例代码如下所示,import clr
使用前,需安装对应模块:
shell
pip install pythonnet
准备工作完成,可直接参考下述代码,获取一次 CPU 温度,多次获取需要写死循环实现。
```python import clr # 导入 pythonnet 模块
OpenHardwareMonitorLib 路径
clr.AddReference(r'C:\Users\Admin\Downloads\openhardwaremonitor-v0.9.6\OpenHardwareMonitor\OpenHardwareMonitorLib.dll')
导入 dll 中的 Computer 模块
from OpenHardwareMonitor.Hardware import Computer
c = Computer()
c.CPUEnabled = True # 获取 CPU 相关信息 c.GPUEnabled = True # 获取 GPU 相关信息 c.Open() for a in range(0, len(c.Hardware[0].Sensors)): print(c.Hardware[0].Sensors[a].Identifier) if "/temperature" in str(c.Hardware[0].Sensors[a].Identifier): print(c.Hardware[0].Sensors[a].get_Value()) ```
上述代码运行时还需要特别注意下,需要使用管理员权限运行,例如在控制台操作,需要用管理员身份打开控制台,在 PyCharm 中操作,也需要用管理员身份打开。
上述获取温度的代码实现比较复杂,那有没有简单的方式呢,还真有(但是大家获取的值都不是很准确):
安装 pyspectator
模块获取 CPU 温度:
```python
使用 pyspectator 模块获取电脑温度
import time from pyspectator.processor import Cpu cpu = Cpu(monitoring_latency=1) with cpu: while True: print(f' 温度: {cpu.temperature} °C') time.sleep(2) ```
📢📢📢📢📢📢 💗 你正在阅读 【梦想橡皮擦】 的博客 👍 阅读完毕,可以点点小手赞一下 🌻 发现错误,直接评论区中指正吧 📆 橡皮擦的第 726 篇原创博客
- 嗨,各位Python程序员,放弃selenium,试试年轻的Playwright如何?
- 09年的老电脑说想看一下CPU温度,作为Python工程师,怎能安装X大师?
- 如果你需要用Python搞个二维码,那应该收藏这篇博客
- 写给Python社群的第2课:Python逻辑语句,天天要写的 if 和 while
- 嗨,程序员,你知道高级工程师用的搜索引擎吗?
- 都2022年了,Python Web框架你不会只知道Django和Flask吧?
- 在座的Python爬虫工程师,你敢爬律师事务所站点吗?
- Python爬虫反爬,你应该从这篇博客开启,UA反爬,Cookie 特定参数反爬
- OpenGauss数据库在 CentOS 上的实践,配置篇
- 【Python技能树共建】动态渲染页面爬取
- 【Python技能树共建】Beautiful Soup
- 【首发字体反爬】猫X眼YingShi,我们又来欺负你了,用到了 OCR 识别技术
- 【首发】某易跟帖篇频道,接口溯源分析,反爬新技巧,必掌握一下
- 【首发】Python反爬,JS反爬串讲,从MAOX眼X开始,本文优先解决反爬参数 signKey
- 【首发】写Python爬虫,服务器返回数据加密了,套路解决法~,出版社,出版社
- 虎牙直播数据采集,为数据分析做储备,Python爬虫120例之第24例
- 我们的骄傲!非遗数据采集,来自官方的数据,Python爬虫无所不爬
- 3天掌握Flask开发项目系列博客之二,操作数据库
- 写给Python社群的第1课:初识Python,开篇知识点就选字符串吧~
- 升级【爸爸程序员】了?用Python给自己的宝贝下载200 绘本动画吧!