Python协程详解
协程 (Coroutine), 是一种比线程更轻量级的存在。它是 单线程里的并发,靠的是 协作式调度,不是操作系统强行切。 为什么需要协程? 想象一个典型场景: 请求 A:等数据库 请求 B:等网络 请求 C:等磁盘 如果你用 同步代码: handle(A) # 卡住 handle(B) handle(C) CPU 大量时间在 等 I/O,很浪费。 协程的思想是: 当我遇到 I/O 等待时,我主动让出 CPU,让别人先跑。 协程 vs 线程 vs 进程 特性 进程 线程 协程 切换开销 最大 中等 最小 内存占用 最大 中等 最小 并发能力 多进程并行 多线程并发 单线程内并发 数据共享 IPC复杂 共享内存, 需要锁 无需锁 创建数量 少量 中量 大量 入门 使用 async/await 语法声明的 协程 是编写 asyncio应用程序 的首选方式。 术语 “协程” 可用于表示两个概念: 一个协程函数:一个 async def 函数; 一个协程对象:调用 协程函数后返回的对象。 ...








