Oi, Marcia! Como vai?
Gostei da forma como você usou any()
para verificar se ainda existe alguma tarefa em andamento, tornando o monitoramento simples e claro. Uma melhoria interessante seria usar enumerate
para mostrar junto o número da tarefa no status, deixando a saída mais descritiva.
import asyncio
async def status_tarefa(numero, tempo):
await asyncio.sleep(tempo)
print(f"Tarefa {numero} finalizada!")
async def main():
tarefas = [
asyncio.create_task(status_tarefa("Tarefa 1", 3)),
asyncio.create_task(status_tarefa("Tarefa 2", 5)),
asyncio.create_task(status_tarefa("Tarefa 3", 7)),
]
while any(not t.done() for t in tarefas):
status = [f"Tarefa {i+1}: Finalizado" if t.done() else f"Tarefa {i+1}: Em andamento"
for i, t in enumerate(tarefas)]
print(status)
await asyncio.sleep(1)
asyncio.run(main())
Esse ajuste deixa a saída mais informativa e organizada.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!