python协程:asyncio
asyncio
是 Python 的标准库,用于编写单线程的并发代码,它使用 async
/await
语法。asyncio
提供了一套高层的 API 来运行和管理协程,同时也支持多种类型的并发操作,包括 TCP 和 UDP 通信、执行子进程、延时调用以及其他与 I/O 相关的任务。
asyncio 的基本用法
-
定义协程 (Coroutine): 使用
async def
语法定义一个协程函数。这个函数可以使用await
暂停其执行,等待另一个协程完成。pythonasync def my_coroutine(): await asyncio.sleep(1) print("Hello, asyncio!")
-
运行协程 (Running Coroutine): 使用
asyncio.run()
函数来运行最高层级的入口点协程。这个函数会运行事件循环,直到给定的协程完成。pythonasyncio.run(my_coroutine())
-
等待协程 (Awaiting Coroutines): 在协程中,你可以使用
await
来等待另一个协程完成,这样当前协程会暂停执行,直到等待的协程完成。pythonasync def another_coroutine(): print("Start") await my_coroutine() print("End")
-
任务 (Task): 任务是对协程的进一步封装,它可以让协程排入事件循环中运行。使用
asyncio.create_task()
来创建任务。pythonasync def main(): task = asyncio.create_task(my_coroutine()) await task # 等待任务完成 asyncio.run(main())
-
并发运行 (Running Concurrently): 使用
asyncio.gather()
可以并发运行多个协程。pythonasync def main(): await asyncio.gather( my_coroutine(), my_coroutine() ) asyncio.run(main())