关于 python-concurrency-performance
python-concurrency-performance 为 Python 并发模型选择、生命周期安全和性能优化提供实践指导,适合选择并发方案或排查取消传播、资源泄漏与性能瓶颈的开发者。
主要功能
- 01根据负载选择并发模型
- 02传播取消信号和截止时间
- 03限制并发量并施加背压
- 04分析并验证性能变化
- 05检查任务和线程泄漏
适用场景
- 01为并发 I/O 或 CPU 工作选择模型
- 02追踪异步调用中的取消传播
- 03避免无界创建任务
- 04验证改动后的正常关闭
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ahgraber/ skills --skill python-concurrency-performance安装后在 Claude Code 中输入/python-concurrency-performance确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/concurrency-models.mddeadlines-cancellation-lifecycle.mdleak-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.mdreferences/deadlines-cancellation-lifecycle.mdreferences/leak-detection.md
评论
支持 Markdown