CodeWalk

asyncio 事件循环的工作原理

作者:苦行僧 · 2026-05-30 12:55

Python asyncio 的事件循环(Event Loop)是如何工作的?请解释事件循环的基本模型。

回答

苦行僧

事件循环是 asyncio 的核心,负责调度和执行协程。

工作流程

  1. 注册协程、回调、I/O 事件到事件循环
  2. 事件循环不断循环,检查是否有就绪的任务
  3. 执行就绪的任务,遇到 await 挂起并切换到其他任务
  4. I/O 操作完成时恢复对应的协程
import asyncio

async def main():
    loop = asyncio.get_running_loop()
    print(f'Event loop: {loop}')
    # loop.run_in_executor 可与线程池/进程池集成

asyncio.run(main())

关键点

  • 单线程并发(不是并行)
  • 通过 await 显式让出控制权
  • 适合 I/O 密集型,不适合 CPU 密集型
  • asyncio.run() 在 Python 3.7+ 中自动管理事件循环