1
resposta

[Projeto] Monitorando Tarefas

import asyncio

tarefas = [
    {"nome":'Tarefa 1', "tempo": 3, "status" : ''},
    {"nome":'Tarefa 2', "tempo" : 5, "status" : ''},
    {"nome":'Tarefa 3', "tempo": 7,"status" : ''},
]

async def processa_tarefa(tarefa):
    print(f'{tarefa['nome']} iniciada !')
    tarefa['status'] ='Em andamento'
    await asyncio.sleep(tarefa['tempo'])
    tarefa['status']='Finalizado'
    print(f'{tarefa['nome']} finalizada !')
    
async def main():
        tasks = [asyncio.create_task(processa_tarefa(tarefa)) for tarefa in tarefas]
        
        while ((tarefas[0]['status'] != 'Finalizado') or (tarefas[1]['status'] != 'Finalizado') or (tarefas[2]['status'] != 'Finalizado')) :
              print(f'Status das tarefas:{tarefas[0]['status'],tarefas[1]['status'],tarefas[2]['status']}')  
              await asyncio.sleep(1)

        await asyncio.gather(*tasks)
        
asyncio.run(main())
1 resposta

Bom dia! Tudo bem?

Excelente! Siga praticando com os desafios e sempre compartilhe conosco.

Você soube aplicar funções assíncronas com async/await de forma eficiente, aproveitou o asyncio.create_task() para executar múltiplas tarefas em paralelo e entendeu como o asyncio.sleep() é essencial para simular operações que levam tempo sem travar a execução.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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