import asyncio import time async def main(): print(f"{time.ctime()} Hello!") await asyncio.sleep(1.0) print(f"{time.ctime()} Goodbye!") loop.stop() def blocking(): # This code only works because our blocking sleep is less than the main functions Asyncio sleep call. If # this function used here was time.sleep(2) then we would get a RuntimeError because the eventloop was # Already closed when the Future's job completed time.sleep(0.5) print(f"{time.ctime()} Hello from thread!") loop = asyncio.get_event_loop() loop.create_task(main()) # Returns a asyncio Future not a asyncio Task loop.run_in_executor(None, blocking) loop.run_forever() # Deprecated Style # pending = asyncio.Task.all_tasks(loop=loop) pending = asyncio.all_tasks(loop=loop) # asyncio.gather also returns a future group = asyncio.gather(*pending) print(f"The type returned of asyncio.gather is: {type(group)}") loop.run_until_complete(group) loop.close()