成为深夜食堂“同时”的新任副厨,在十二个营业夜里通过厨房时间线亲眼观察并掌握 threading、multiprocessing 和 asyncio 的 10 小时课程
0:00–0:50
第一晚的长队:并发与并行
0:50–1:40
多招几个厨师:threading 基础
1:40–2:30
黑板上的数字错了:竞争条件与 Lock
2:30–3:20
只有三个灶台:同步工具
3:20–4:10
刀与砧板:死锁
4:10–5:00
订单夹:queue
5:00–5:50
外派厨师:concurrent.futures
5:50–6:40
面团为什么快不起来:GIL 与并行
6:40–7:30
一个人跑全场的前厅经理:asyncio 入门
7:30–8:20
团体预订取消了:结构化并发
8:20–9:10
前厅停住了:阻塞调用与混合使用
9:10–10:00
评论家之夜:综合
望远洞一条小巷的尽头,有一家晚上十点才亮灯的小食堂。招牌上写着 深夜食堂“同时”。老板兼主厨尹瑞妍做了二十年服务器后端开发,到现在还这样形容她的厨房:“厨房就是程序。”
从今天起,你就是这间厨房新来的副厨。这门 10 小时的课程跟着开业第一个月的十二个营业夜走下去,带你掌握 Python 里同时做好几件事的三种工具。
threading:多请几个厨师。multiprocessing(以及 concurrent.futures):多开几间厨房。asyncio:一个人在等的时候去做别的事。| 人物 | 做什么 |
|---|---|
| 尹瑞妍主厨 | 老板兼主厨。脖子上挂着计时器。每晚递给你订单,打烊时留下一张配方卡。 |
| 敏浩 | 炉台厨师。手快,但毛手毛脚。 |
| 秀雅 | 炉台厨师。细心周到。 |
| 老卓 | 炉台厨师。慢,但从不出错。 |
| 小露 | 前厅经理。一个人跑整个前厅,外号“事件循环”。第 9 课起是主角。 |
到了这个月的最后一晚,一位隐藏身份的美食评论家会来到店里。
| 阶段 | 课次 | 厨房 |
|---|---|---|
| 多个厨师 | 1~7 | 线程、竞争条件、锁、死锁、队列、工作池 |
| 多间厨房 | 8 | GIL、进程、无 GIL 的 3.14t、子解释器 |
| 一个人跑的前厅 | 9~11 | asyncio、TaskGroup、取消与超时、阻塞 |
| 评论家之夜 | 12 | 所有工具放进同一间厨房 |
每一课都以当晚的事件收尾、自成一体,所以只挑需要的那几晚来看也没问题。
with 和异常处理的 Python 水平。学完本站的正则表达式课程就足够了。.py 文件,用 python 文件名.py 运行。尤其是 multiprocessing 的示例,要用文件运行,不要在交互式命令行里跑。主厨的提醒
并发这东西,光看代码是找不到感觉的。时间线一定要自己动手跑一跑。看懂横条是怎么叠在一起的,你就懂了一半。
订阅新课时和新课程通知
本课程新增课时或推出后续课程时,我们会发邮件通知你。
问答
关于本课有任何疑问都可以在这里留言。所有语言版本页面的提问会汇集在一起。