import asyncio
# Base de dados: Uma lista de dicionários para facilitar a expansao
# Prioridades: 1 para VIP, 2 para Comum, 3 para Desvinculado
usuarios = [
{"nome": "Ana", "tipo": "VIP", "prioridade": 1, "ativo": True},
{"nome": "Bruno", "tipo": "VIP", "prioridade": 1, "ativo": True},
{"nome": "Joao", "tipo": "Comum", "prioridade": 2, "ativo": False},
{"nome": "Maria", "tipo": "Comum", "prioridade": 2, "ativo": True},
{"nome": "Carla", "tipo": "Desvinculado", "prioridade": 3, "ativo": True},
{"nome": "Douglas", "tipo": "Desvinculado", "prioridade": 3, "ativo": True},
]
async def processar_notificacao(user):
# Simula o processamento paralelo (todos esperam juntos)
await asyncio.sleep(1)
nome = user["nome"]
# Logica de filtro
if user["prioridade"] == 3:
msg = f"USUARIO {nome}: Conta desvinculada. Nao notificar."
elif not user["ativo"]:
msg = f"USUARIO {nome}: Notificacoes desativadas pelo usuario."
else:
prefixo = "[VIP]" if user["prioridade"] == 1 else "[COMUM]"
msg = f"{prefixo} Notificacao enviada para {nome}."
# Retornamos a prioridade para poder ordenar depois
return (user["prioridade"], msg)
async def main():
print(f"Processando {len(usuarios)} usuarios simultaneamente...\n")
# Dispara todas as tarefas de uma vez
tarefas = [processar_notificacao(u) for u in usuarios]
resultados = await asyncio.gather(*tarefas)
# Ordena por prioridade (1, 2, 3)
resultados.sort()
# Exibe o resultado final organizado
for _, mensagem in resultados:
print(mensagem)
if __name__ == "__main__":
asyncio.run(main())