1
resposta

[RESPOSTA]

import asyncio
import random

async def download(arquivo, tamanho):
    print(f'Iniciando download de {arquivo} (tamanho: {tamanho})...')
    tempo = round(tamanho/5)
    for i in range(0, tempo):

        await asyncio.sleep(1)
        print(f'[{i + 1}s] {arquivo}: {(i + 1) * 5}MB baixados')

    print(f'{arquivo} concluído!\n')

async def main():
    arquivos = [f"arquivo{i}.txt" for i in range(1,6)]
    tamanho = [(5*random.randint(2, 10)) for i in range(0, 6)]
    tarefas = [asyncio.create_task(download(arquivos[i], tamanho[i+1])) for i in range(0, 5)]
    await asyncio.gather(*tarefas)
    print("Todos os downloads foram finalizados!")

asyncio.run(main())

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi, Mauricio! Como vai?

Gostei bastante da forma como você estruturou as tarefas assíncronas com asyncio.create_task, deixando o processo de downloads bem dinâmico. Esse tipo de prática ajuda a visualizar de forma simples como várias tarefas podem acontecer ao mesmo tempo.

Uma dica interessante para o futuro é usar o método enumerate para simplificar iterações em listas. Veja este exemplo:


arquivos = ["a.txt", "b.txt", "c.txt"]
for indice, nome in enumerate(arquivos, start=1):
    print(indice, nome)

Esse código percorre a lista mostrando o índice e o valor de cada item automaticamente.

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