import asyncio
import random
VELOCIDADE_DOWNLOAD = 5 # MB por segundo
Função assíncrona para simular o download
async def baixar_arquivo(nome_arquivo, tamanho):
print(f"Iniciando download de {nome_arquivo} (tamanho: {tamanho}MB)...")
baixado = 0
tempo = 0
while baixado < tamanho:
await asyncio.sleep(1)
tempo += 1
baixado += VELOCIDADE_DOWNLOAD
# Garante que não ultrapasse o tamanho total
if baixado > tamanho:
baixado = tamanho
print(f"[{tempo}s] {nome_arquivo}: {baixado}MB baixados")
print(f"{nome_arquivo} concluído!\n")
Função principal
async def main():
tarefas = []
# Criando 5 arquivos com tamanhos aleatórios
for i in range(1, 6):
nome = f"arquivo_{i}.txt"
tamanho = random.randint(10, 50)
tarefa = asyncio.create_task(baixar_arquivo(nome, tamanho))
tarefas.append(tarefa)
# Aguarda todos os downloads terminarem
await asyncio.gather(*tarefas)
print("Todos os downloads foram finalizados!")
Executa o programa
asyncio.run(main())