python协程:asyncio

asyncio 是 Python 的标准库,用于编写单线程的并发代码,它使用 async/await 语法。asyncio 提供了一套高层的 API 来运行和管理协程,同时也支持多种类型的并发操作,包括 TCP 和 UDP 通信、执行子进程、延时调用以及其他与 I/O 相关的任务。

 

asyncio 的基本用法

  1. 定义协程 (Coroutine): 使用 async def 语法定义一个协程函数。这个函数可以使用 await 暂停其执行,等待另一个协程完成。

    python
    async def my_coroutine():
        await asyncio.sleep(1)
        print("Hello, asyncio!")
  2. 运行协程 (Running Coroutine): 使用 asyncio.run() 函数来运行最高层级的入口点协程。这个函数会运行事件循环,直到给定的协程完成。

    python
    asyncio.run(my_coroutine())
  3. 等待协程 (Awaiting Coroutines): 在协程中,你可以使用 await 来等待另一个协程完成,这样当前协程会暂停执行,直到等待的协程完成。

    python
    async def another_coroutine():
        print("Start")
        await my_coroutine()
        print("End")
  4. 任务 (Task): 任务是对协程的进一步封装,它可以让协程排入事件循环中运行。使用 asyncio.create_task() 来创建任务。

    python
    async def main():
        task = asyncio.create_task(my_coroutine())
        await task  # 等待任务完成
    asyncio.run(main())
  5. 并发运行 (Running Concurrently): 使用 asyncio.gather() 可以并发运行多个协程。

    python
    async def main():
        await asyncio.gather(
            my_coroutine(),
            my_coroutine()
        )
    asyncio.run(main())
posted @ 2024-04-16 14:19  一路向北321  阅读(24)  评论(0编辑  收藏  举报