mcpField
P
python-performance-optimization

python-performance-optimization

github.com/wshobson开发41.9k36.0k 次安装2 周前更新
代码仓库

关于 python-performance-optimization

面向 Python 开发者的性能分析与优化指南,涵盖 CPU、内存、I/O 分析和实现策略,帮助依据测量结果定位瓶颈。

主要功能

  1. 01CPU、内存与逐行性能分析
  2. 02检查调用关系和性能指标
  3. 03优化算法与数据结构
  4. 04缓存、并行化和原生扩展建议

适用场景

  1. 01定位 Python 应用的性能瓶颈
  2. 02减少延迟和内存占用
  3. 03优化数据库与 I/O 操作
  4. 04加速数据处理管道

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wshobson/agents --skill python-performance-optimization

安装后在 Claude Code 中输入/python-performance-optimization确认已加载。

附带文件references/advanced-patterns.mdreferences/details.md

详细介绍

Python 性能优化

全面介绍如何对 Python 代码进行性能剖析、分析和优化以提升性能,包括 CPU 剖析、内存优化和实现最佳实践。

何时使用本技能

  • 识别 Python 应用中的性能瓶颈
  • 降低应用延迟和响应时间
  • 优化 CPU 密集型操作
  • 减少内存消耗和内存泄漏
  • 提升数据库查询性能
  • 优化 I/O 操作
  • 加速数据处理流水线
  • 实现高性能算法
  • 对生产应用进行性能剖析

核心概念

1. 剖析类型
  • CPU 剖析:识别耗时函数
  • 内存剖析:跟踪内存分配和泄漏
  • 逐行剖析:按行级粒度进行剖析
  • 调用图:可视化函数调用关系
2. 性能指标
  • 执行时间:操作需要多长时间
  • 内存使用:峰值和平均内存消耗
  • CPU 利用率:处理器使用模式
  • I/O 等待:在 I/O 操作上花费的时间
3. 优化策略
  • 算法层面:更好的算法和数据结构
  • 实现层面:更高效的代码模式
  • 并行化:多线程/多进程
  • 缓存:避免重复计算
  • 原生扩展:对关键路径使用 C/Rust

快速开始

基本计时
import time

def measure_time():
    """Simple timing measurement."""
    start = time.time()

    # Your code here
    result = sum(range(1000000))

    elapsed = time.time() - start
    print(f"Execution time: {elapsed:.4f} seconds")
    return result

# Better: use timeit for accurate measurements
import timeit

execution_time = timeit.timeit(
    "sum(range(1000000))",
    number=100
)
print(f"Average time: {execution_time/100:.6f} seconds")

详细模式与完整示例

详细的模式文档位于 references/details.md。当上述导航层级不够用时,请阅读该文件。

最佳实践

  1. 先剖析再优化 - 通过测量找出真正的瓶颈
  2. 关注热点路径 - 优化执行最频繁的代码
  3. 使用合适的数据结构 - 查找用 dict,成员判断用 set
  4. 避免过早优化 - 先保证清晰,再优化
  5. 使用内置函数 - 它们是用 C 实现的
  6. 缓存昂贵的计算 - 使用 lru_cache
  7. 批量执行 I/O 操作 - 减少系统调用
  8. 对大型数据集使用生成器
  9. 数值运算考虑使用 NumPy
  10. 对生产代码进行剖析 - 对在线系统使用 py-spy

常见陷阱

  • 未剖析就进行优化
  • 不必要地使用全局变量
  • 未使用合适的数据结构
  • 创建不必要的数据副本
  • 未对数据库使用连接池
  • 忽视算法复杂度
  • 过度优化极少执行的代码路径
  • 未考虑内存使用

评论

支持 Markdown