Python协程详解
什么是协程 协程 (Coroutine), 也被称为微线程, 是一种比线程更轻量级的存在。简单来说, 协程是一种用户态的轻量级线程, 协程的调度完全由用户控制。 协程 vs 线程 vs 进程 特性 进程 线程 协程 切换开销 最大 中等 最小 内存占用 最大 中等 最小 并发能力 多进程并行 多线程并发 单线程内并发 数据共享 IPC复杂 共享内存, 需要锁 无需锁 创建数量 少量 中量 大量 协程的核心优势: 极低的上下文切换成本 单线程即可实现高并发 避免了多线程的锁竞争问题 代码结构清晰, 逻辑同步 协程的基本概念 生成器 (Generator) 在Python 3.5之前, 协程是通过生成器实现的。生成器是一种特殊的迭代器, 可以在执行过程中暂停和恢复。 def simple_generator(): print("开始执行") yield 1 print("继续执行") yield 2 print("结束执行") # 创建生成器 gen = simple_generator() # 手动迭代 print(next(gen)) # 输出: 开始执行, 1 print(next(gen)) # 输出: 继续执行, 2 print(next(gen)) # StopIteration yield 关键字 yield 类似于 return, 但不会结束函数 每次调用 next() 时, 生成器执行到 yield 并返回值 下次调用 next() 时, 从上次的 yield 继续执行 def countdown(n): print("开始倒计时") while n > 0: yield n n -= 1 for i in countdown(5): print(i) # 输出: # 开始倒计时 # 5 # 4 # 3 # 2 # 1 send() 方法 生成器的 send() 方法可以向生成器内部发送数据: ...

