Updated code example for asyncio.gather
The previous example did not fully showcase the interest of using gather. Here the example showcases "the result is an aggregate list of returned values".
This commit is contained in:
parent
c353764fd5
commit
89dfc03974
|
@ -360,32 +360,35 @@ Running Tasks Concurrently
|
|||
async def factorial(name, number):
|
||||
f = 1
|
||||
for i in range(2, number + 1):
|
||||
print(f"Task {name}: Compute factorial({i})...")
|
||||
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*:
|
||||
await asyncio.gather(
|
||||
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)...
|
||||
# Task B: Compute factorial(2)...
|
||||
# Task C: Compute factorial(2)...
|
||||
# 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)...
|
||||
# Task C: Compute factorial(3)...
|
||||
# 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)...
|
||||
# Task C: Compute factorial(4), currently i=4...
|
||||
# Task C: factorial(4) = 24
|
||||
# [2, 6, 24]
|
||||
|
||||
.. versionchanged:: 3.7
|
||||
If the *gather* itself is cancelled, the cancellation is
|
||||
|
|
Loading…
Reference in New Issue