Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Sugestão para "Executando fatorial em paralelo"

import asyncio
import math

lista = [5, 3, 7, 4, 6]

async def fatorial(n):
    return math.factorial(n)


async def main():
    resultados_fatorias = await asyncio.gather(*(fatorial(n) for n in lista))
    fatoriais_ordenados = sorted(resultados_fatorias)
    lista_ordenada = sorted(lista)
    listas_unidas = zip(lista_ordenada, fatoriais_ordenados)
    
    for n, resultado in listas_unidas:
        await asyncio.sleep(1) 
        resultado_final = (f"{n}! = {resultado}")
        print(resultado_final)

asyncio.run(main())
1 resposta
solução!

Oi, Edgard! Tudo bom?

Excelente! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Você soube aplicar funções assíncronas de forma eficiente, aproveitou o asyncio.gather para executar várias tarefas simultaneamente e entendeu como o await com asyncio.sleep é essencial para simular atrasos ou operações demoradas sem bloquear a execução.

Como dica adicional, experimente utilizar o asyncio.create_task() quando precisar iniciar tarefas de forma independente e controlar sua execução no tempo. Assim:

import asyncio

async def tarefa(n):
    await asyncio.sleep(1)
    print(f"Tarefa {n} concluída!")

async def main():
    tarefas = [asyncio.create_task(tarefa(i)) for i in range(3)]
    await asyncio.gather(*tarefas)

asyncio.run(main())

Resultado:

Tarefa 0 concluída!
Tarefa 1 concluída!
Tarefa 2 concluída!

Com isso, você poderá controlar múltiplas execuções assíncronas com mais facilidade.

Í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!