0
respostas

[Sugestão] Executando fatorial em paralelo

import random
import asyncio
import math

# 1. Função que processa um único número
async def calcular_fatoracao(n):
    # Simula um pequeno delay para cada cálculo
    await asyncio.sleep(1)
    resultado = math.factorial(n)
    print(f"Número: {n:<2} | Fatorial: {resultado}")

async def main():
    # 2. Gerar e ORDENAR a lista (crescente)
    numeros = [random.randint(1, 20) for _ in range(5)]
    numeros.sort() # Coloca em ordem: 1, 2, 3...
    
    print(f"Processando em ordem crescente: {numeros}\n")

    # 3. Criar a lista de tarefas baseada na lista ordenada
    tarefas = [calcular_fatoracao(n) for n in numeros]

    # 4. Executar tudo simultaneamente
    await asyncio.gather(*tarefas)

if __name__ == "__main__":
    asyncio.run(main())