asyncio异步编程:async/await、事件循环、异步任务全解

asyncio异步编程:async/await、事件循环、异步任务全解

博客导语

asyncio是Python官方异步框架,彻底替代yield老式协程。本文讲透事件循环、任务对象、阻塞原理、并发执行,是爬虫、高并发接口核心基础。


一、async/await语法规则

  • async:定义异步函数

  • await:阻塞等待异步IO,自动切换其他任务


二、基础异步案例

import asyncio async def hello(): print("异步任务开始") await asyncio.sleep(2) print("异步任务结束") # 运行事件循环 asyncio.run(hello())

三、多任务并发(核心用法)

async def main(): task1 = asyncio.create_task(hello()) task2 = asyncio.create_task(hello()) await task1 await task2 asyncio.run(main())

两个任务并发执行,总耗时约2秒,而非4秒。


四、事件循环 EventLoop

事件循环是异步程序的调度中心,负责:注册任务、监听IO阻塞、切换任务、执行回调。所有asyncio程序都依赖事件循环驱动。


五、异步核心特性

  1. 单线程超高并发

  2. IO阻塞自动切换任务

  3. 无锁、无线程安全问题