Files
2026-04-10 15:30:12 +08:00

277 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 安装(推荐)
```bash
pip install py-cpuinfo
```
### 2. 验证安装是否成功
```bash
python -c "import cpuinfo; print(cpuinfo.get_cpu_info()['brand_raw'])"
```
如果输出了 CPU 型号名称,说明安装成功。
---
## 三、快速入门示例
```python
from cpuinfo import get_cpu_info
info = get_cpu_info()
print(info)
```
该代码会返回一个包含 CPU 所有信息的字典对象。
---
## 四、核心 API 说明
### 1. `cpuinfo.get_cpu_info()`
**功能**:获取完整的 CPU 信息
**返回值类型**:`dict`
```python
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 支持的所有指令集标志(列表) |
示例:
```python
cpu['flags']
# ['avx', 'avx2', 'sse', 'sse2', 'sse3', 'ssse3', 'aes', ...]
```
可用于判断 CPU 是否支持某些优化指令,如:
```python
if 'avx2' in cpu['flags']:
print("CPU 支持 AVX2")
```
---
## 六、常见使用示例
### 1. 获取 CPU 型号
```python
from cpuinfo import get_cpu_info
cpu = get_cpu_info()
print(cpu['brand_raw'])
```
---
### 2. 判断 CPU 厂商
```python
vendor = cpu['vendor_id_raw']
if vendor == "GenuineIntel":
print("Intel CPU")
elif vendor == "AuthenticAMD":
print("AMD CPU")
```
---
### 3. 判断 CPU 架构
```python
arch = cpu['arch']
print(arch) # X86_32 / X86_64 / ARM_7 / ARM_8
```
---
### 4. 判断是否为服务器 CPU(辅助判断)
```python
if cpu['cores'] >= 16:
print("可能是服务器 CPU")
```
---
### 5. 判断是否支持 AES / AVX2
```python
if 'aes' in cpu['flags'] and 'avx2' in cpu['flags']:
print("适合加密和并行计算")
```
---
### 6. 获取 CPU 缓存大小(MB)
```python
l3_mb = cpu['l3_cache_size'] / (1024 * 1024)
print(f"L3 Cache: {l3_mb:.1f} MB")
```
---
## 七、命令行用法(CLI)
py-cpuinfo 也提供了简单的命令行工具。
### 1. 查看所有 CPU 信息
```bash
python -m cpuinfo
```
### 2. 只查看 CPU 型号
```bash
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` 模块一起使用,增强环境判断能力
示例:
```python
import platform
from cpuinfo import get_cpu_info
print(platform.system(), platform.release())
print(get_cpu_info()['brand_raw'])
```
---
## 十一、总结
py-cpuinfo 是一个**简单、可靠、跨平台**的 CPU 信息获取工具,非常适合用于:
- 性能调优
- 环境检测
- 软件兼容性判断
- 自动化运维与硬件审计