python 协程创建

创建日期: 2025-05-14 11:58 | 作者: 风波 | 浏览次数: 6 | 分类: Python

通过 asyncio.create_task()

将一个协程(coroutine)包装成一个 Task 对象,并立即将其加入事件循环的任务队列中,从而实现异步并发执行。 create_task() 用于​​一次性并发任务​​(如HTTP请求、数据库查询等) create_task() 必须在事件循环运行时调用(例如在 async 函数中)。 create_task() 会将协程提交到事件循环中,​​无需等待它完成​​,后续代码可以继续执行。适合需要“后台运行”任务的场景(如同时处理多个网络请求)。

import asyncio

async def my_coroutine():
    print("Coroutine started")
    await asyncio.sleep(1)
    print("Coroutine finished")

async def main():
    # 将协程包装成 Task 并调度执行
    task = asyncio.create_task(my_coroutine())
    print("Task created")
    await task  # 等待任务完成(可选)

asyncio.run(main())

返回的 Task 对象可用于等待任务完成(await task)或取消任务(task.cancel())。 如果未显式 await 任务,主协程可能在任务完成前退出 可以通过 task.cancel() 取消任务,但需要处理 CancelledError:

通过 asyncio.gather()

asyncio.gather() 用于​​并发运行多个协程​​并等待它们全部完成

# 使用 gather 并发多个协程
await asyncio.gather(my_coroutine(), my_coroutine())
6 浏览
10 爬虫
0 评论