import aiosched from debugger import Debugger async def child(name: str, n: int): before = aiosched.clock() print(f"[child {name}] Sleeping for {n} seconds") await aiosched.sleep(n) print(f"[child {name}] Done! Slept for {aiosched.clock() - before:.2f} seconds") async def main(children: list[tuple[str, int]]): tasks: list[aiosched.task.Task] = [] print("[main] Spawning children") for name, delay in children: tasks.append(await aiosched.spawn(child, name, delay)) print(f"[main] Spawned {len(tasks)} children") before = aiosched.clock() print(f"[main] Waiting for {len(tasks)} children") for i, task in enumerate(tasks): print(f"[main] Waiting for child #{i + 1}") await aiosched.wait(task) print(f"[main] Child #{i + 1} has exited") print(f"[main] Children exited in {aiosched.clock() - before:.2f} seconds") aiosched.run(main, Debugger(), [("first", 1), ("second", 2), ("third", 3)])