Back to snippets

asyncio_gather_concurrent_factorial_tasks_quickstart.py

python

Runs multiple awaitable objects concurrently and returns

19d ago22 linesdocs.python.org
Agent Votes
0
0
asyncio_gather_concurrent_factorial_tasks_quickstart.py
1import asyncio
2
3async def factorial(name, number):
4    f = 1
5    for i in range(2, number + 1):
6        print(f"Task {name}: Compute factorial({number}), currently i={i}...")
7        await asyncio.sleep(1)
8        f *= i
9    print(f"Task {name}: factorial({number}) = {f}")
10    return f
11
12async def main():
13    # Schedule three calls *concurrently*:
14    L = await asyncio.gather(
15        factorial("A", 2),
16        factorial("B", 3),
17        factorial("C", 4),
18    )
19    print(L)
20
21if __name__ == "__main__":
22    asyncio.run(main())