Python Performance: Quando Lentidão Custa Dinheiro

Seu script Python processa 1 milhão de registros. Leva 2 horas. CEO pergunta: por que é tão lento?

Problema? Você usa listas. Loop dentro de loop. Append dentro de loop. Sem vectorização.

Problema Real

usuarios = []  # Errado
      for row in dados_sql:
      usuarios.append(row['id'])  # 1 milhão append = LENTO
      # Correto
      usuarios = [row['id'] for row in dados_sql]  # Mais rápido
      # Melhor ainda
      import numpy as np
      usuarios = np.array([row['id'] for row in dados_sql])  # 10x mais rápido

Pandas vs Loop

Loop: 30 segundos. Pandas: 0.3 segundos. 100x mais rápido.

Por quê? Pandas usa NumPy (C por baixo), não Python puro.

Profiling

import cProfile
      cProfile.run('sua_funcao_lenta()')

Você descobre que 80% do tempo está em 1 lugar. Otimiza lá.

Ganho

Processamento de 2h para 20 min. Server CPU: de 80% para 8%. Economiza 5 instâncias EC2 (R$ 3k/mês).

← Voltar ao blog