惰性导入让 Python Agent 启动快 46%,还揪出隐藏循环依赖
Federal-Teaching2800 · reddit · 2026-07-22
Python 桌面应用通过把包导入改成惰性加载,把 agent 启动速度显著拉快:启动到健康检查从 1234ms 降到 915ms,加载模块数从 627 个降到 554 个。
- 作者先用 -X importtime 定位到一个耗时模块,先把单个导入改懒后只省了约 100ms,说明真正瓶颈更深。
- 根因在于多个包的 init.py 过早重导出整个表面,导致一次看似无关的子模块导入,拖进了整棵 eval / evolution / governance / core 依赖树。
- 改法是用 PEP 562 让这些重导出在首次属性访问时才解析,同时用 TYPECHECKING 保持 mypy 类型可见。
- 这次优化还意外暴露了一个真实循环依赖:governance.ledgertool -> tools.base -> tools/init -> tools.browser -> fence -> ledgertool。
- 之前它只是被导入顺序“掩盖”了;把 tools 也改成懒加载后,循环依赖被从源头修掉,而不是靠函数内局部导入打补丁。
- 结论很实用:Python agent / 应用启动慢时,先查导入链和 init.py,因为成本不会消失,只是从启动期移到第一次请求。
「编程与Agent」频道最新
- MCP 可能缓解工程师最耗时的上下文切换 — nijfranck · 2026-07-22
- Hugging Face、PyTorch 与 Red Hat AI 宣布班加罗尔 meetup — ariG23498 · 2026-07-22
- Grok 被定位为解决真实工程问题而非刷榜 — yunta_tsai · 2026-07-22
- 有人用 PHP 从零实现了 MCP 服务端和 OAuth2 — elixon · 2026-07-22
- 开源 Skill 把中文故事做成手绘日记动画 — dotey · 2026-07-22
- ISO 认为 RLVR 可保持权重谱并把训练提速 2.7 倍 — UTEXAS · 2026-07-22