如何在Python3.11环境中启用全新性能分析监控工具?

夜伟姑娘_4966

夜伟姑娘_4966

2026-10-15

741人浏览

原创

python 3.11 的 perf 支持默认未启用,需在 linux 下编译时添加 --with-perf 选项并安装 libpfm4-dev 和内核头文件,且运行时需满足 perf_event_paranoid 权限要求。

如何在python3.11环境中启用全新性能分析监控工具?

Python 3.11 自带 perf 支持,但默认不启用;需手动编译启用 --with-perf,且仅 Linux 有效。

为什么 perf 在 Python 3.11 中不可用?

Python 3.11 引入了对 Linux perf 工具的原生支持(通过 PyPerf),用于采集函数级、指令级性能事件(如 cache-misses、cycles)。但它不是开箱即用的:

  • CPython 源码编译时必须显式传入 --with-perf 配置选项
  • 系统需安装 libpfm4-dev(或 libpfm4)和内核头文件(linux-headers-$(uname -r))
  • macOS / Windows 完全不支持 —— perf 是 Linux 内核专属工具
  • 即使编译成功,运行时还需 root 权限或 /proc/sys/kernel/perf_event_paranoid ≤ 2

如何编译启用 perf 的 Python 3.11?

跳过 pyenv / conda 等包管理器,直接从源码构建(以 Ubuntu/Debian 为例):

sudo apt install -y build-essential zlib1g-dev libncurses5-dev \
    libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev \
    libpfm4-dev linux-headers-$(uname -r)
<p>curl -O <a href="https://www.php.cn/link/57c7a0e5e1fe44af505cb32552d9403b">https://www.php.cn/link/57c7a0e5e1fe44af505cb32552d9403b</a>
tar -xf Python-3.11.9.tgz
cd Python-3.11.9</p><p>./configure --enable-optimizations --with-perf
make -j$(nproc)
sudo make altinstall  # 避免覆盖系统 python3</p>

验证是否生效:

python-parallelization
python-parallelization

将顺序 Python 代码转换为并行/并发实现,用于在需要并行化 Python 代码、提升性能时使用。

下载
python3.11 -c "import sys; print(hasattr(sys, 'perf'))"
# 输出 True 即表示已启用

sys.perf 的基本用法与常见陷阱

启用后,sys.perf 是一个上下文管理器对象,用于开启/停止采样。它不替代 cProfile,而是提供更低层的硬件事件追踪能力:

  • 必须在主线程中使用 —— 子线程调用会静默失败
  • 不支持嵌套:同一时间只能有一个活跃的 sys.perf 会话
  • 默认只采集 cycles,要加其他事件需显式传参,例如:sys.perf("cycles,instructions,cache-misses")
  • 输出是二进制 perf.data 文件,需用系统 perf script 或 perf report 解析,Python 不提供内置解析器
  • 若看到 PermissionError: [Errno 1] Operation not permitted,检查 perf_event_paranoid 值(临时修复:echo 1 | sudo tee /proc/sys/kernel/perf_event_paranoid)

替代方案:没权限编译?用 py-spy 或 scalene

如果你无法重装 Python(如生产环境 Docker、受限 CI 环境),sys.perf 就走不通。此时更现实的选择是:

  • py-spy:无需修改目标进程,支持 attach 到正在运行的 Python 3.7+ 进程,输出火焰图,命令简单:py-spy record -p <pid> -o profile.svg</pid>
  • scalene:专为 Python 设计,能同时分析 CPU、内存、GPU,且支持行级精度,安装即用:pip install scalene && python -m scalene your_script.py
  • 注意:cProfile 和 line_profiler 仍是调试热点函数的最快路径,别为了“新”而绕远路

真正卡点往往不在工具本身,而在你能否拿到带符号表的 Python 二进制(比如 Alpine 镜像里删掉了 .debug)、是否允许提升 perf 权限、以及是否有足够权限部署非标准 Python —— 这些比选哪个函数名更重要。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1731

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

4424

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1709

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

25957

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3147

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3167

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1183

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

596

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2463

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习