import asyncio import time async def say(name: str, delay: int): await asyncio.sleep(delay) print(name) async def say_await_three_times(name: str, delay: int): start_time = time.perf_counter() await say(name, delay) await say(name, delay) await say(name, delay) print( f"Function say_await_three_times worked for {time.perf_counter() - start_time:.2f}s" ) async def async_say_with_group(name: str, delay: int): start_time = time.perf_counter() async with asyncio.TaskGroup() as tg: tg.create_task(say(name, delay)) tg.create_task(say(name, delay)) tg.create_task(say(name, delay)) print( f"Function async_say_with_group worked for {time.perf_counter() - start_time:.2f}s" ) if __name__ == "__main__": asyncio.run(say("Alex", 3)) asyncio.run(say_await_three_times("Anna", 4)) asyncio.run(async_say_with_group("Roman", 4))