This repository has been archived on 2023-05-12. You can view files and clone it, but cannot push or open issues or pull requests.
aiosched/tests/raw_wait.py

28 lines
964 B
Python

import aiosched
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")
if __name__ == "__main__":
aiosched.run(main, [("first", 1), ("second", 2), ("third", 3)])