计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
py-perf-analyzer【效率与协作】定位 Python 脚本的性能瓶颈,集成 cProfile、tracemalloc 和 line_profiler,一键执行 CPU 热点函数、内存分配或逐行耗时分析,并可输出 JSON 报告。当用户提到优化脚本、分析性能、定位 CPU 或内存热点、进行逐行分析,或询问代码为什么慢、如何加速、内存泄漏等问题时触发。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Python 性能分析工具,集成 cProfile、line_profiler 和 tracemalloc,一键定位 CPU 和内存瓶颈。
all 模式一次执行同时收集 CPU + 内存数据,减少重复运行开销| 依赖 | 类型 | 用途 |
|---|---|---|
| Python 3.7+ | 必须 | 运行环境 |
| cProfile / pstats | 内置 | CPU 性能分析 |
| tracemalloc | 内置 | 内存追踪 |
| line_profiler | 可选 | 逐行分析(pip install line_profiler) |
python scripts/perf_profile.py <脚本路径> [脚本参数...] [选项]
| 参数 | 说明 | 默认值 |
|---|---|---|
script | 要分析的 Python 脚本路径(必填) | - |
script_args | 传递给目标脚本的参数 | 无 |
--mode | 分析模式:cpu / memory / line / all | cpu |
--top | 显示 Top N 结果 | 20 |
--sort | CPU 分析排序:cumulative / tottime / calls | cumulative |
--output | 输出 JSON 报告到文件 | 仅终端输出 |
--function | 逐行分析的目标函数名(逗号分隔) | 自动发现 |
--threshold | 只显示占比超过此值(%)的函数 | 0 |
# CPU 分析(默认模式)
python scripts/perf_profile.py my_script.py
# 内存分析
python scripts/perf_profile.py my_script.py --mode memory
# 逐行分析指定函数
python scripts/perf_profile.py my_script.py --mode line --function compute,process_data
# 全量分析(CPU + 内存),只看 Top 10
python scripts/perf_profile.py my_script.py --mode all --top 10
# 传递参数给目标脚本,输出 JSON 报告
python scripts/perf_profile.py my_script.py --output report.json -- --input data.csv --output result.csv
# 只关注占比 > 5% 的函数
python scripts/perf_profile.py my_script.py --threshold 5
============================================================
CPU 性能分析报告 (cProfile)
============================================================
总执行时间: 2.3456 秒
总函数调用: 1,234,567 次
分析函数数: 89 个
Top 5 耗时函数:
--------------------------------------------------------
排名 占比 累计(s) 自身(s) 调用 函数
--------------------------------------------------------
1 45.2% 1.0605 0.8234 1000 compute.py:23:matrix_multiply
2 22.1% 0.5183 0.5183 50000 utils.py:45:normalize
3 12.3% 0.2885 0.1200 500 io.py:12:read_batch
...
🔍 主要瓶颈: matrix_multiply (45.2% 时间)
位置: compute.py:23
============================================================
内存分析报告 (tracemalloc)
============================================================
峰值内存: 128.5 MB
当前内存: 64.2 MB
Top 5 内存分配:
--------------------------------------------------------
排名 大小 数量 位置
--------------------------------------------------------
1 45.2 MB 10000 data_loader.py:78
2 22.1 MB 5000 transform.py:45
...
内存增长热点:
--------------------------------------------------------
1 +32.0 MB (+8000) data_loader.py:78
...
使用 --output 参数可导出完整的结构化 JSON 报告,包含所有分析维度的详细数据,便于后续处理或接入 CI 流水线。