Como otimizar a performance em automações com Python RPA [Dicas]

This is a discussion topic for the original post at Como otimizar a performance em automações com Python RPA [Dicas] - BotCity | Python RPA | Blog

:white_check_mark: Muitas vezes os robôs rodam processos 24/7, por meses e anos. Embora Python proporcione uma performance até 20x mais rápida do que as plataformas low-code, por ser código puro e mais fácil de ser processado pela máquina, ainda assim, aplicar pequenas melhorias podem trazer grandes resultados ao longo do tempo;


:white_check_mark: Para testar mais no detalhe a performance do seu código, é possível usar bibliotecas/profilers para identificar gargalos: 
• Timeit
• line_profiler
• memory_profiler
• cProfile
• Stackfy

✅ Cada projeto tem seus requisitos, mas vale ponderar alguns itens para otimizar ainda mais seu robô em Python:

• Não importe bibliotecas desnecessárias, só carregue no momento que precisa

• Reduza o tráfego de dados, baixe apenas o que for usar

• Avalie outros processos rodando na mesma máquina e evite horários de pico

• Monitore a performance dos seus bots para identificar degradações

• Não faça cálculos repetidos e desnecessários, use caching

• Use algoritmos e estruturas adequadas para cada caso (lists/tuples, sets/dictionaries)

• Use built-in functions e libraries

• Use generators (prefira xrange ao invés de range) e keys para fazer sorting

• Libere a memória (close, exit…) e evite criar objetos sem necessidade

• Otimize consultas e processamentos em bancos de dados

• Verifique como ficaria melhor acessar parte dos dados com APIs

• Se for possível, use comunicação assíncrona

• Avalie se faz sentido fazer o deploy com container ou serverless

• Considere usar automações em background e paralelizadas, quando possível

• Avalie Loops e comandos dentro de loops, prefira List Comprehensions

• Pode ser mais performático usar IDs e atalhos de teclado do que reconhecimento de imagem e movimentação do mouse

• Use set operations

• Evite variáveis globais

• Utilize operações vetorizadas/NumPy e bibliotecas otimizadas como o Pandas e Polars

• Use multiple assignments

• Use in quando possível

• Otimize operações com strings (ex. join ao invés de + para concatenar) e interning strings

• Aprenda também sobre Multiprocessing, Itertools, CPython/Cython, Pypy, Mojo…

• Evite otimizar a performance e prejudicar a leitura e manutenção do código do robô

✅ Também existem diversas ferramentas para ajudar na otimização e segurança de código em Python:
• Deepsource
• Codacy
• SonarQube
• Veracode
• Checkmarx