📄 一句话概括
并行省的时间是真的,但协调要花钱——协调成本超过省下的时间,并行就变成负收益;所以不是活越多越该并行。
📝 本节和前面几节的关系
第三部分第二站。前一章讲给它加能力,这一章讲用多个它。前两节先把【并行到底划不划算】算清楚。
一、并行省了什么
三件互不依赖的活:改登录页 30 分钟、写结算文案 20 分钟、修样式 bug 10 分钟。 串行 60 分钟,并行 30 分钟——被最长的那件拖住。 省下 30 分钟,这是真的。
二、并行要付什么
协调:谁先做、结果怎么合、两边说法不一致时听谁的。 本节的演示把协调成本代进去算:花 5 分钟还净省 25 分钟,花 30 分钟就变成倒亏。 所以有个反直觉的结论:大部分时候不该并行。活少的时候,串行反而更快。
三、所以什么时候该开多个窗口
三个条件同时满足:活是独立的、量大到值得协调、你能忍住不去频繁插手。 只满足前两条还不够——第三条最容易被忽略,见第 8.6 节。 反过来,一件事拆成三步(第 6.5 节那种)就不该并行,那是依赖关系,不是并列关系。
四、一个人开很多窗口的本质
它不是【你变成了团队】,是你一个人的注意力被拆成几份。 所以窗口开多了,判断质量会下降——每个窗口都要你抽空看一眼。 这就是为什么本节标题是【一个人为什么】——问的是值不值,不是能不能。
五、动手 Demo:一个人为什么要开那么多窗口
下面把三件活的串行与并行算一遍,再把协调成本代进去。
jobs = [(u"改登录页", 30), (u"写结算文案", 20), (u"修样式 bug", 10)]
total = sum(m for _, m in jobs)
for extra in (5, 15, 30):
P(u" 协调花 %2d 分钟 -> 净省 %2d 分钟" % (extra, total - max(m for _, m in jobs) - extra))
实跑输出:
--------------------------------------------------------------------
一个人为什么要开那么多窗口
--------------------------------------------------------------------
先算清楚并行到底省了什么。下面是三件互不依赖的活:
活 串行要多久
------------------------------
改登录页 30 分钟
写结算文案 20 分钟
修一个样式 bug 10 分钟
串行:60 分钟。并行:30 分钟(被最长的那件拖住)。
省下 30 分钟——但**并行不是免费的**。加上协调:
协调花 5 分钟 -> 净省 25 分钟
协调花 15 分钟 -> 净省 15 分钟
协调花 30 分钟 -> 净省 0 分钟
协调成本超过 30 分钟,并行就变成负收益。
**所以不是活越多越该并行,而是【协调成本低于省下的时间】才该并行。**
代进协调成本之后结论就变了:协调花 30 分钟,并行就是倒亏。 所以这一节的判据不是【活多不多】,是【协调成本有没有低于省下的 30 分钟】。
30 秒实验
- 回忆最近一次并行做的事,算一算省了多少分钟、协调花了几分钟。
- 如果只有一两件小事,别并行——串行更快更稳。
常见误区
- 以为并行总比串行好。活少的时候并行是倒亏——协调成本吃掉了收益。
- 把有依赖的步骤拆成并行。比如第 6.5 节那五轮,那是先后关系不是并列关系。
自测三问(点开对答案)
1. 并行的收益是怎么被吃掉的? —— 协调成本——花 30 分钟协调时,并行就成了倒亏。 2. 什么时候该开多个窗口? —— 活独立、量大到值得协调、而且你忍得住不频繁插手,三条都满足。 3. 为什么【一个人开很多窗口】不等于变成团队? —— 你一个人的注意力被拆成几份,判断质量会下降。- ☐ 下一节(8.2 worktree:并行运行的基础设施)
相关笔记
- 🤖 Agent+RPA实战 · 索引 — 并行与协作的完整方法
- 🧡 Claude Code橙皮书 · 索引