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

5.6 KiB
Raw Permalink Blame History

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 信息获取工具,非常适合用于:

  • 性能调优
  • 环境检测
  • 软件兼容性判断
  • 自动化运维与硬件审计