1
resposta

Monitoramento de download

import asyncio

arquivos = [
    {'nome': 'arquivo_1.txt', 'tamanho': 30},
    {'nome': 'arquivo_2.txt', 'tamanho': 45},
    {'nome': 'arquivo_3.txt', 'tamanho': 20},
    {'nome': 'arquivo_4.txt', 'tamanho': 10},
    {'nome': 'arquivo_5.txt', 'tamanho': 50}
]

async def baixar_arquivo(nome, tamanho, velocidade=5, tempo = 1):
    print(f"Iniciando download de {nome} (tamanho: {tamanho}MB)")
    baixado = 0
    while baixado < tamanho:
        await asyncio.sleep(1)
        baixado += velocidade
        if baixado > tamanho:
            baixado = tamanho
        print(f"[{tempo}s] {nome}: {tamanho} MB baixados")
        tempo += 1
    print(f"{nome} concluído!")

async def main():
    tarefas = [
        asyncio.create_task(baixar_arquivo(arquivo['nome'], arquivo['tamanho']))
        for arquivo in arquivos
    ]
    await asyncio.gather(*tarefas)
    print("Todos os downloads foram concluídos!")


asyncio.run(main())
1 resposta

E aí, Márcia! Tudo bem?

Parabéns! Mantenha o ritmo nos exercícios e continue compartilhando na nossa comunidade.

Percebi que você praticou o uso de funções assíncronas com async def, aplicou muito bem o asyncio.create_task() para iniciar múltiplos downloads simultâneos e ainda entendeu a relevância de asyncio.gather() para coordenar a execução paralela de tarefas.

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

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!