mirror of https://github.com/python/cpython
Updated code example for asyncio.gather (GH-20604)
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
65d180d983
commit
56b8ea65d2
|
@ -358,32 +358,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]
|
||||
|
||||
.. note::
|
||||
If *return_exceptions* is False, cancelling gather() after it
|
||||
|
|
Loading…
Reference in New Issue