mcpField
P
python-concurrency-performance

python-concurrency-performance

github.com/ahgraber开发651 次安装4 天前更新
代码仓库

关于 python-concurrency-performance

python-concurrency-performance 为 Python 并发模型选择、生命周期安全和性能优化提供实践指导,适合选择并发方案或排查取消传播、资源泄漏与性能瓶颈的开发者。

主要功能

  1. 01根据负载选择并发模型
  2. 02传播取消信号和截止时间
  3. 03限制并发量并施加背压
  4. 04分析并验证性能变化
  5. 05检查任务和线程泄漏

适用场景

  1. 01为并发 I/O 或 CPU 工作选择模型
  2. 02追踪异步调用中的取消传播
  3. 03避免无界创建任务
  4. 04验证改动后的正常关闭

安装

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

$npx skills add https://github.com/ahgraber/skills --skill python-concurrency-performance

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
concurrency-models.md
deadlines-cancellation-lifecycle.md
leak-detection.md

详细介绍

Python 并发与性能

概述

正确的并发设计始于根据工作负载选择合适的模型,而非迎合开发者的偏好。 此技能规定了模型选择、取消/截止时间行为和生命周期安全方面的默认建议——优先采用显式控制,而非隐式魔法。

请将这些建议视为优先默认选项。 如果项目约束要求偏离这些建议,请指出权衡和补偿性控制措施。

适用场景

  • 在 asyncio、threading、multiprocessing 或 concurrent.futures 之间进行选择
  • 在异步调用链中传递截止时间或取消信号
  • 限制扇出、施加背压,或控制信号量保护的并发
  • 诊断竞态条件、死锁或优先级反转
  • 在优化前后分析吞吐量瓶颈
  • 验证关闭或生命周期转换时没有任务或线程泄漏
不适用场景
  • 更适合使用 NumPy/C 扩展的纯 CPU 密集型数值工作
  • 没有并发 I/O 的单线程脚本
  • 分布式系统协调(请改用工作流/编排技能)

快速参考

  • 根据工作负载特征选择并发模型(I/O 密集型 → asyncio/线程;CPU 密集型 → 多进程)。
  • 明确处理取消和清理——切勿依赖垃圾回收来关闭资源。
  • 使用信号量或队列限制来控制扇出和背压;无限制地创建任务容易导致 OOM。
  • 优化前先测量;每次更改后都重新测量,以确认效果。
  • 对任何涉及生命周期的更改(启动、关闭、重新连接),都要验证没有任务/线程泄漏。

常见错误

  • 默认使用线程处理 I/O 密集型工作 — 对网络 I/O 而言,asyncio 可完全避免线程安全问题;线程则会增加同步开销,却没有任何收益。
  • 忽略取消信号的传播 — 如果已取消的父任务没有取消子任务,就会造成任务泄漏并使连接保持打开状态。
  • 不受限制地调用 gather / submit — 没有信号量或有界执行器,却创建数千个任务,会使事件循环无法及时处理任务,或耗尽操作系统线程。
  • 未经分析就进行优化 — 猜测瓶颈会导致代码变复杂,却解决了错误的问题;务必先进行性能分析。
  • 未验证关闭过程 — 未断言是否干净关闭的测试,会掩盖资源缓慢泄漏的问题;这些问题只会在生产环境的负载下显现。

范围说明

  • 将这些建议视为常见场景的优先默认选项,而非普遍规则。
  • 如果某项默认建议与项目约束冲突或会导致结果变差,请提出更合适的替代方案,并说明它为何更适用于当前场景。
  • 如果偏离默认建议,请指出权衡和补偿性控制措施(测试、可观测性、迁移、回滚)。

调用说明

  • 按名称调用此技能时,请告知用户:python-concurrency-performance。

参考资料

  • references/concurrency-models.md
  • references/deadlines-cancellation-lifecycle.md
  • references/leak-detection.md

评论

支持 Markdown