asyncio.run(coro)
This function always creates a new event loop and closes it at the end. It should be used as a main entry point for asyncio programs, and should ideally only be called once.
asyncio.Runner()
A context manager that simplifies multiple async function calls in the same context.
async def main():
await asyncio.sleep(1)
print('hello')
with asyncio.Runner() as runner:
runner.run(main())