You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AsyncIterable转换为asyncio Task并实现并行运行?

解决方案

首先定义一个辅助协程,用来收集异步迭代器的所有结果,将其转换为可被asyncio.gather处理的协程:

async def collect_async_iter(aiter: AsyncIterable):
    return [item async for item in aiter]

接着直接用asyncio.gather并行运行多个包装后的任务,结果会严格按传入顺序与源迭代器一一对应:

results_1, results_2, results_3 = await asyncio.gather(collect_async_iter(iterable()), collect_async_iter(iterable()), collect_async_iter(iterable()))

关键说明

  • [item async for item in aiter]是Python 3.10+支持的异步列表推导,会遍历异步迭代器至结束并收集所有元素
  • 若需要显式创建asyncio.Task而非让gather自动封装,可传入asyncio.create_task(collect_async_iter(iterable()))

内容的提问来源于stack exchange,提问作者Intrastellar Explorer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 17:27:04