Lee el código con atención
import asyncio
events: list[str] = []
async def worker(ready: asyncio.Event, name: str) -> None:
events.append(f"{name} waiting")
await ready.wait()
events.append(f"{name} go")
async def main() -> None:
ready = asyncio.Event()
w1 = asyncio.create_task(worker(ready, "w1"))
w2 = asyncio.create_task(worker(ready, "w2"))
w3 = asyncio.create_task(worker(ready, "w3"))
# Two scheduling ticks so all 3 workers reach their await ready.wait().
await asyncio.sleep(0)
await asyncio.sleep(0)
events.append("setting event")
ready.set()
await asyncio.gather(w1, w2, w3)
# Late waiter — event stays set, so this never blocks.
events.append("late waiter")
await ready.wait()
events.append("late waiter past")
print(f"event set: {ready.is_set()}")
for e in events:
print(e)
asyncio.run(main())
¿Qué imprimirá el programa? Escribe aquí: