28 lines
975 B
Python
28 lines
975 B
Python
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)])
|