用法:
awaitable asyncio.gather(*aws, return_exceptions=False)
在
aws
序列concurrently
中运行等待对象。如果
aws
中的任何等待是协程,它会自动安排为任务。如果所有可等待对象都成功完成,则结果是返回值的聚合列表。结果值的顺序对应于
aws
中等待的顺序。如果
return_exceptions
是False
(默认),第一个引发的异常会立即传播到等待的任务gather()
.其他待办事项aws
序列不会被取消并将继续运行。如果
return_exceptions
是True
,则将异常视为成功结果,并在结果列表中聚合。如果
gather()
是cancelled
,则所有提交的等待项(尚未完成)也是cancelled
。如果有任何任务或未来来自
aws
序列是cancelled
, 它被视为提升CancelledError
- 这gather()
电话是不是在这种情况下取消。这是为了防止取消一个已提交的 Task/Future 导致其他 Tasks/Future 被取消。在 3.10 版中更改:删除了
loop
范围。例子:
import asyncio async def factorial(name, number): f = 1 for i in range(2, number + 1): print(f"Task {name}: Compute factorial({number}), currently i={i}...") await asyncio.sleep(1) f *= i print(f"Task {name}: factorial({number}) = {f}") return f async def main(): # Schedule three calls *concurrently*: L = await asyncio.gather( factorial("A", 2), factorial("B", 3), factorial("C", 4), ) print(L) asyncio.run(main()) # Expected output: # # Task A: Compute factorial(2), currently i=2... # Task B: Compute factorial(3), currently i=2... # Task C: Compute factorial(4), currently i=2... # Task A: factorial(2) = 2 # Task B: Compute factorial(3), currently i=3... # Task C: Compute factorial(4), currently i=3... # Task B: factorial(3) = 6 # Task C: Compute factorial(4), currently i=4... # Task C: factorial(4) = 24 # [2, 6, 24]
注意
如果
return_exceptions
为 False,则在标记为完成后取消 gather() 不会取消任何已提交的等待项。例如,gather 可以在将异常传播给调用者后标记为已完成,因此,在从 collect 捕获异常(由 awaitables 之一引发)后调用gather.cancel()
不会取消任何其他 awaitables。在 3.7 版中更改:如果
gather
本身被取消,取消被传播而不管return_exceptions
.在 3.10 版中更改:删除了
loop
范围。自 3.10 版起已弃用:如果没有提供位置参数或者不是所有位置参数都是Future-like 对象并且没有正在运行的事件循环,则会发出弃用警告。
相关用法
- Python asyncio.BaseTransport.get_extra_info用法及代码示例
- Python asyncio.shield用法及代码示例
- Python asyncio.run用法及代码示例
- Python asyncio.wait_for用法及代码示例
- Python asyncio.create_task用法及代码示例
- Python asyncio.Task.cancel用法及代码示例
- Python asyncio.loop.run_in_executor用法及代码示例
- Python asyncio.Server用法及代码示例
- Python asyncio.Server.serve_forever用法及代码示例
- Python asyncio.Event用法及代码示例
- Python asyncio.sleep用法及代码示例
- Python asyncio.to_thread用法及代码示例
- Python asyncio.Condition用法及代码示例
- Python asyncio.SelectorEventLoop用法及代码示例
- Python asyncio.run_coroutine_threadsafe用法及代码示例
- Python asyncio.Lock用法及代码示例
- Python asyncio.Future.add_done_callback用法及代码示例
- Python asyncio.loop.shutdown_asyncgens用法及代码示例
- Python asyncio.as_completed用法及代码示例
- Python asyncio.Semaphore用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 asyncio.gather。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。