1
resposta

Atividade 11.

import asyncio

Lista para armazenar o status das tarefas

status_tarefas = ["Em andamento", "Em andamento", "Em andamento"]

Função assíncrona para cada tarefa

async def executar_tarefa(numero, tempo):
await asyncio.sleep(tempo)
status_tarefas[numero - 1] = "Finalizado"
print(f"Tarefa {numero} finalizada!")

Função principal

async def main():
# Criando as tarefas
tarefa1 = asyncio.create_task(executar_tarefa(1, 3))
tarefa2 = asyncio.create_task(executar_tarefa(2, 5))
tarefa3 = asyncio.create_task(executar_tarefa(3, 7))

tarefas = [tarefa1, tarefa2, tarefa3]

# Verificando o status das tarefas a cada segundo
while not all(tarefa.done() for tarefa in tarefas):
    print(f"Status das tarefas: {status_tarefas}")
    await asyncio.sleep(1)

# Aguarda todas finalizarem
await asyncio.gather(*tarefas)

Executando o programa

asyncio.run(main())

1 resposta

Oi, Luiz! Como vai?

Agradeço por compartilhar.

Sua solução ficou bem organizada: você criou as tarefas com asyncio.create_task(), acompanhou o andamento com while not all(tarefa.done() for tarefa in tarefas) e atualizou a lista status_tarefas conforme cada tarefa foi finalizada. Isso mostra bem como o programa consegue monitorar tarefas assíncronas enquanto elas ainda estão em execução.

Continue praticando esse fluxo de criar tarefas, acompanhar o status e finalizar com asyncio.gather(), porque ele é muito útil em programas assíncronos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!