关于 python
面向 Python 3.11+ 应用的性能优化指南,按影响程度整理异步 I/O、数据结构、内存和并发等建议。可用于代码编写、性能审查与自动化重构。
主要功能
- 01涵盖 8 类性能主题
- 02规则按影响程度排序
- 03提供异步 I/O 建议
- 04指导数据结构与内存优化
- 05涵盖并发和迭代技巧
适用场景
- 01编写异步 I/O 代码
- 02为集合选择数据结构
- 03优化数据密集型应用的内存
- 04审查并发代码的性能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill python安装后在 Claude Code 中输入/python确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mdconc-asyncio-for-io.mdconc-multiprocessing-cpu.mdconc-queue-communication.mdconc-taskgroup.mdconc-threadpool-blocking.mdds-bisect-sorted.mdds-defaultdict.mdds-deque-for-queue.mdds-dict-for-lookup.mdds-frozenset-for-hashable.mdds-set-for-membership.mdfunc-keyword-only.mdfunc-lru-cache.mdfunc-partial.mdfunc-reduce-calls.mdio-aiofiles.mdio-async-gather.mdio-connection-pooling.mdio-defer-await.mdio-semaphore.mdio-uvloop.mdloop-any-all.mdloop-comprehension.mdloop-dict-items.mdloop-enumerate.mdloop-hoist-invariants.md详细介绍
Python 3.11 最佳实践
面向 Python 3.11+ 应用的综合性能优化指南。包含 8 个类别的 42 条规则,并按影响排序,帮助自动化重构和代码生成。
适用场景
在以下情况下参考这些指南:
- 编写新的 Python 异步 I/O 代码
- 为集合选择数据结构
- 优化数据密集型应用的内存使用
- 实现并发或并行处理
- 检查 Python 代码中的性能问题
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | I/O 与异步模式 | 严重 | io- |
| 2 | 数据结构选择 | 严重 | ds- |
| 3 | 内存优化 | 高 | mem- |
| 4 | 并发与并行 | 高 | conc- |
| 5 | 循环与迭代 | 中 | loop- |
| 6 | 字符串操作 | 中 | str- |
| 7 | 函数与调用开销 | 低至中 | func- |
| 8 | Python 惯用法与微优化 | 低 | py- |
目录
-
I/O 与异步模式 — 严重
- 1.1 延迟执行 await,直到需要值时再调用 — 严重(依赖操作可快 2–5 倍)
- 1.2 使用 aiofiles 执行异步文件操作 — 严重(防止阻塞事件循环)
- 1.3 使用 asyncio.gather() 执行并发 I/O — 严重(吞吐量提升 2–10 倍)
- 1.4 使用连接池访问数据库 — 严重(每次连接可节省 100–200 毫秒)
- 1.5 使用信号量限制并发操作 — 严重(防止资源耗尽)
- 1.6 使用 uvloop 加快事件循环 — 严重(异步 I/O 快 2–4 倍)
-
数据结构选择 — 严重
- 2.1 使用 bisect 执行 O(log n) 排序列表操作 — 严重(搜索复杂度从 O(n) 降至 O(log n))
- 2.2 使用 defaultdict 避免检查键是否存在 — 严重(消除冗余查找)
- 2.3 使用 deque 执行 O(1) 队列操作 — 严重(popleft 操作复杂度从 O(n) 降至 O(1))
- 2.4 使用 Dict 执行 O(1) 键值查找 — 严重(查找复杂度从 O(n) 降至 O(1))
- 2.5 使用 frozenset 作为可哈希集合键 — 严重(支持集合的集合模式)
- 2.6 使用 Set 执行 O(1) 成员测试 — 严重(查找复杂度从 O(n) 降至 O(1))
-
内存优化 — 高
- 3.1 驻留重复字符串以节省内存 — 高(减少重复字符串存储)
- 3.2 使用 slots 创建节省内存的类 — 高(每个实例减少 20–50% 的内存)
- 3.3 使用 array.array 存储同质数值数据 — 高(数值数据的内存用量减少 4–8 倍)
- 3.4 使用生成器处理大型序列 — 高(内存用量减少 100–1000 倍)
- 3.5 使用 weakref 缓存以防止内存泄漏 — 高(防止缓存无限增长)
-
并发与并行 — HIGH
- 4.1 使用 asyncio 实现 I/O 密集型并发 — HIGH(I/O 吞吐量提升 300%)
- 4.2 使用 multiprocessing 实现 CPU 密集型并行 — HIGH(多核系统上提速 4-8×)
- 4.3 使用 Queue 实现线程安全通信 — HIGH(防止竞态条件)
- 4.4 使用 TaskGroup 实现结构化并发 — HIGH(防止失败时发生资源泄漏)
- 4.5 在异步代码中使用 ThreadPoolExecutor 处理阻塞调用 — HIGH(防止阻塞事件循环)
-
循环与迭代 — MEDIUM
- 5.1 将循环不变量计算移出循环 — MEDIUM(避免 N× 次冗余计算)
- 5.2 使用 any() 和 all() 汇总布尔值 — MEDIUM(最佳情况下从 O(n) 降至 O(1))
- 5.3 使用 dict.items() 遍历键值对 — MEDIUM(单次查找,而非两次查找)
- 5.4 使用 enumerate() 遍历索引和值 — MEDIUM(代码更简洁,避免索引错误)
- 5.5 使用 itertools 实现高效迭代模式 — MEDIUM(迭代模式提速 2-3×)
- 5.6 使用列表推导式替代显式循环 — MEDIUM(迭代提速 2-3×)
-
字符串操作 — MEDIUM
- 6.1 使用 f-strings 进行简单的字符串格式化 — MEDIUM(比 .format() 快 20-30%)
- 6.2 使用 join() 拼接多个字符串 — MEDIUM(拼接 5 个以上字符串时快 4×)
- 6.3 使用带元组的 str.startswith() 匹配多个前缀 — MEDIUM(一次调用,而非多次比较)
- 6.4 使用 str.translate() 替换字符 — MEDIUM(比连续调用 replace() 快 10×)
-
函数与调用开销 — LOW-MEDIUM
- 7.1 减少紧密循环中的函数调用 — LOW-MEDIUM(每 100 万次迭代节省 100ms)
- 7.2 使用 functools.partial 预填充参数 — LOW-MEDIUM(通过内省,调试速度提升 50%)
- 7.3 使用仅限关键字的参数,让 API 更清晰 — LOW-MEDIUM(防止位置参数错误)
- 7.4 使用 lru_cache 缓存开销大的函数结果 — LOW-MEDIUM(避免重复计算)
-
Python 惯用法与微优化 — LOW
- 8.1 利用零开销异常处理 — LOW(正常路径上零开销(Python 3.11+))
- 8.2 优先使用局部变量,而非全局查找 — LOW(名称解析更快)
- 8.3 使用 dataclass 定义数据类 — LOW(样板代码减少 80%)
- 8.4 使用延迟导入加快启动速度 — LOW(启动速度提升 10-15%)
- 8.5 使用 match 语句进行结构化模式匹配 — LOW(降低分支复杂度)
- 8.6 使用海象运算符在表达式中赋值 — LOW(消除冗余计算)
References
评论
支持 Markdown