Python/asyncio

From Fundamental Ramen
< Python
Revision as of 07:05, 27 January 2021 by Tacoball (talk | contribs)
Jump to navigation Jump to search
import asyncio

async def job(n):
    print('begin job #{}.'.format(n))
    await asyncio.sleep(2)
    return n * n

async def test_await():
    # Sequentially
    r = await job(1)
    print(r)
    r = await job(2)
    print(r)
    r = await job(3)
    print(r)

async def test_gather():
    # Run all then get all
    r = await asyncio.gather(
      job(1),
      job(2),
      job(3)
    )
    print(r)

async def test_create_task():
    # Run first, get result later
    a1 = asyncio.create_task(job(1))
    a2 = asyncio.create_task(job(2))
    a3 = asyncio.create_task(job(3))
    r1 = await a1
    print(r1)
    r2 = await a2
    print(r2)
    r3 = await a3
    print(r3)

async def main():
    await test_await()
    await test_gather()
    await test_create_task()

asyncio.run(main())