5.6 KiB
5.6 KiB
py-cpuinfo 详细使用文档
py-cpuinfo 是一个轻量级的 Python 库,用于跨平台获取 CPU 信息,无需安装系统级依赖,适用于 Linux / Windows / macOS / BSD 等系统。它常用于性能分析、环境检测、硬件审计、自动化运维等场景。
一、简介
- 项目名称:py-cpuinfo
- GitHub:https://github.com/workhorsy/py-cpuinfo
- 主要功能:
- 获取 CPU 型号、厂商、架构
- 获取 CPU 核心数(物理 / 逻辑)
- 获取 CPU 频率、缓存大小
- 获取 CPU 支持的指令集(如 AVX、SSE、AES)
- 特点:
- 纯 Python 实现
- 无外部依赖
- 跨平台兼容性好
二、安装方法
1. 使用 pip 安装(推荐)
pip install py-cpuinfo
2. 验证安装是否成功
python -c "import cpuinfo; print(cpuinfo.get_cpu_info()['brand_raw'])"
如果输出了 CPU 型号名称,说明安装成功。
三、快速入门示例
from cpuinfo import get_cpu_info
info = get_cpu_info()
print(info)
该代码会返回一个包含 CPU 所有信息的字典对象。
四、核心 API 说明
1. cpuinfo.get_cpu_info()
功能:获取完整的 CPU 信息
返回值类型:dict
from cpuinfo import get_cpu_info
cpu = get_cpu_info()
五、常用字段详解
以下是 get_cpu_info() 返回字典中最常用、最重要的字段说明。不同平台字段可能略有差异,但核心字段基本一致。
1. 基础信息
| 字段名 | 含义 | 示例 |
|---|---|---|
brand_raw |
CPU 原始品牌字符串 | "Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz" |
vendor_id_raw |
CPU 厂商 ID | "GenuineIntel" |
arch |
架构 | "X86_64" |
family |
CPU 家族编号 | 6 |
model |
型号编号 | 158 |
stepping |
步进 | 13 |
2. 核心与线程信息
| 字段名 | 含义 | 示例 |
|---|---|---|
count |
逻辑 CPU 数量 | 8 |
cores |
物理核心数 | 4 |
threads_per_core |
每核线程数 | 2 |
✅ 常见关系:
逻辑 CPU 数 = 物理核心数 × threads_per_core
3. 频率信息(单位:MHz)
| 字段名 | 含义 | 示例 |
|---|---|---|
hz_advertised_friendly |
标称主频 | "3.6000 GHz" |
hz_actual_friendly |
当前实际主频 | "4.9000 GHz" |
hz_advertised |
标称主频(数值) | [3600000000, 0] |
hz_actual |
实际主频(数值) | [4900000000, 0] |
4. 缓存信息(单位:字节)
| 字段名 | 含义 | 示例 |
|---|---|---|
l1_data_cache_size |
L1 数据缓存 | 32768 |
l1_instruction_cache_size |
L1 指令缓存 | 32768 |
l2_cache_size |
L2 缓存 | 262144 |
l3_cache_size |
L3 缓存 | 8388608 |
5. 指令集支持
| 字段名 | 含义 |
|---|---|
flags |
CPU 支持的所有指令集标志(列表) |
示例:
cpu['flags']
# ['avx', 'avx2', 'sse', 'sse2', 'sse3', 'ssse3', 'aes', ...]
可用于判断 CPU 是否支持某些优化指令,如:
if 'avx2' in cpu['flags']:
print("CPU 支持 AVX2")
六、常见使用示例
1. 获取 CPU 型号
from cpuinfo import get_cpu_info
cpu = get_cpu_info()
print(cpu['brand_raw'])
2. 判断 CPU 厂商
vendor = cpu['vendor_id_raw']
if vendor == "GenuineIntel":
print("Intel CPU")
elif vendor == "AuthenticAMD":
print("AMD CPU")
3. 判断 CPU 架构
arch = cpu['arch']
print(arch) # X86_32 / X86_64 / ARM_7 / ARM_8
4. 判断是否为服务器 CPU(辅助判断)
if cpu['cores'] >= 16:
print("可能是服务器 CPU")
5. 判断是否支持 AES / AVX2
if 'aes' in cpu['flags'] and 'avx2' in cpu['flags']:
print("适合加密和并行计算")
6. 获取 CPU 缓存大小(MB)
l3_mb = cpu['l3_cache_size'] / (1024 * 1024)
print(f"L3 Cache: {l3_mb:.1f} MB")
七、命令行用法(CLI)
py-cpuinfo 也提供了简单的命令行工具。
1. 查看所有 CPU 信息
python -m cpuinfo
2. 只查看 CPU 型号
python -m cpuinfo | grep brand_raw
八、平台兼容性说明
| 操作系统 | 支持情况 |
|---|---|
| Linux | ✅ 完全支持 |
| Windows | ✅ 完全支持 |
| macOS | ✅ 支持 |
| FreeBSD / OpenBSD | ✅ 基本支持 |
| ARM / x86 | ✅ 均支持 |
⚠️ 注意:
- 部分字段在某些平台可能为空或不完整
- ARM 架构下字段数量通常少于 x86
九、常见问题(FAQ)
Q1:为什么 hz_actual 为 0?
A:在某些虚拟化环境或受限系统中,无法读取实时频率,此时通常回退为标称频率。
Q2:为什么 cores 和 count 一样?
A:说明 CPU 不支持超线程(Hyper-Threading)。
Q3:能否用于生产环境?
A:可以。py-cpuinfo 是只读、无副作用的库,适合生产环境使用。
十、最佳实践建议
- ✅ 只读取所需字段,避免一次性解析全部信息
- ✅ 在程序启动时缓存结果,避免频繁调用
- ✅ 结合
platform、os模块一起使用,增强环境判断能力
示例:
import platform
from cpuinfo import get_cpu_info
print(platform.system(), platform.release())
print(get_cpu_info()['brand_raw'])
十一、总结
py-cpuinfo 是一个简单、可靠、跨平台的 CPU 信息获取工具,非常适合用于:
- 性能调优
- 环境检测
- 软件兼容性判断
- 自动化运维与硬件审计