定位 Python 脚本的性能瓶颈,集成 cProfile、tracemalloc 和 line_profiler,一键执行 CPU 热点函数、内存分配或逐行耗时分析,并可输出 JSON 报告。当用户提到优化脚本、分析性能、定位 CPU 或内存热点、进行逐行分析,或询问代码为什么慢、如何加速、内存泄漏等问题时触发。
Scanned 9/6/2026
Install to Claude Code
npx -y skills add serejaris/kimi-skills --skill py-perf-analyzer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Py Perf Analyzer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/serejaris-py-perf-analyzer)More formats (shields.io, HTML) on the badges page.
---
name: py-perf-analyzer
description: "定位 Python 脚本的性能瓶颈,集成 cProfile、tracemalloc 和 line_profiler,一键执行 CPU 热点函数、内存分配或逐行耗时分析,并可输出 JSON 报告。当用户提到优化脚本、分析性能、定位 CPU 或内存热点、进行逐行分析,或询问代码为什么慢、如何加速、内存泄漏等问题时触发。"
license: MIT
type: tool
tags: [python, profiling, performance, cProfile, memory, optimization]
---
# Perf Profiler
Python 性能分析工具,集成 cProfile、line_profiler 和 tracemalloc,一键定位 CPU 和内存瓶颈。
## 功能
- **CPU 分析 (cProfile)**:统计每个函数的调用次数、累计耗时、自身耗时,定位热点函数
- **内存分析 (tracemalloc)**:追踪内存分配热点、峰值内存、内存增长来源
- **逐行分析 (line_profiler)**:精确到每一行代码的耗时和命中次数,适合深入优化
- **组合分析**:`all` 模式一次执行同时收集 CPU + 内存数据,减少重复运行开销
## 依赖
| 依赖 | 类型 | 用途 |
|------|------|------|
| Python 3.7+ | 必须 | 运行环境 |
| cProfile / pstats | 内置 | CPU 性能分析 |
| tracemalloc | 内置 | 内存追踪 |
| line_profiler | 可选 | 逐行分析(`pip install line_profiler`) |
## 使用方式
```bash
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` |
### 示例
```bash
# 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 分析报告
```
============================================================
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
...
```
### JSON 报告
使用 `--output` 参数可导出完整的结构化 JSON 报告,包含所有分析维度的详细数据,便于后续处理或接入 CI 流水线。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!