Introdução
Um Pycon 2021, o criador da linguagem Python, Sir Guido Van Rossum traçou seus planos de longo e curto prazo sobre como tornar as versões futuras do Python mais rápidas e ele imagina fazer isso duas vezes mais rápido do que é atualmente.. PyPy e CPython são alguns dos exemplos existentes que tentam aumentar a velocidade de execução do Python, mas você também pode fazer isso sozinho se apenas seguir algumas dicas e truques sobre como melhorar suas habilidades de codificação para que você esteja escrevendo um código eficiente e não desperdiçando memória ou tempo de CPU.
Então, Por que escolher python?
Python se tornou uma das linguagens mais aceitas devido ao fato de ser fácil de programar e muito conveniente de usar.. A velocidade nunca foi um dos pontos fortes do Python, mas isso não significa que você sempre terá que fornecer resultados ineficientes. Em python as pessoas preferem “Velocidade de desenvolvimento ” sobre ele “Velocidade de execução“. Pode não ter o desempenho bruto de C ou Java, mas você ficará surpreso com a rapidez com que um aplicativo Python otimizado corretamente pode ser executado. Essa velocidade é suficiente para alimentar vários aplicativos, como análise de dados, ferramentas de automação, administração e muitos outros. Se você seguir algumas dicas e procedimentos de codificação padrão, você pode quase esquecer que estava trocando o desempenho do aplicativo pela produtividade do desenvolvedor em primeiro lugar.
1. Perfis de código
Na realidade, você precisa medir seu código fora do seu ambiente de teste ou UAT e diretamente na produção ou no ambiente ao vivo para descobrir exatamente por que ou onde seu código está sendo executado mais lentamente. É aqui que entra a criação de perfil e você pode usar o software integrado do Python “CProfile” módulo para inspecionar seu código em busca de partes que podem estar reduzindo o desempenho de seu código geral.
Se você precisar de maior precisão, você pode usar qualquer outro gerador de perfil poderoso que irá fornecer uma análise em profundidade, mas em muitos casos, um criador de perfil simples pode percorrer um longo caminho para rastrear a função culpada ou a linha de código que está causando um gargalo. em execução. Você será capaz de identificar e testar com precisão com uma linha de base para estabelecer padrões anormais ou tempos de execução em vários cenários de implantação e você pode tentar adivinhar prematuramente, mas isso pode não levar a muito sucesso e, portanto, você deve sempre usar um profiler para quebrar seu código de forma eficiente.
2. Memorização
A memorização é um processo em que o mesmo trabalho não se repete indefinidamente, mesmo que seja uma função cujo valor já foi previamente calculado. Python lhe dá a opção de um cache que lhe dará a capacidade de obter instantaneamente resultados de funções que foram calculadas anteriormente. Essas funcionalidades especiais python são conhecidas como decoradoras e você pode usá-las em seu código para acelerar seu código..
Contribuição :
import timeit def fib(n): se n < 2: return n else: fib retorno(n-1) + lorota(n-2) t1 = timeit. Temporizador("lorota(40)", "de __main__ importação fib") imprimir(t1.timeit(1))
Partida: (na minha máquina local)
47.392615799999994
adicionar as duas linhas seguintes de código:
from functools import lru_cache
@lru_cache(maxsize=100)
Partida: (na minha máquina local)
5.8000000000002494e-05
Chocante, não é assim? Este é o poder da LRU_Cache na biblioteca de funções. Você pode definir um valor personalizado para o cache LRU ou configurá-lo para "Nenhum’ para armazenar tudo. para armazenar tudo. Por exemplo, para armazenar tudo 24 horas ou um valor que será chamado várias vezes nas próximas 24 horas.
3. Use o Numpy para todas as operações matemáticas
NumPy é famoso por suas operações matemáticas baseadas em matrizes ou qualquer tipo de matriz, mas o ingrediente secreto aqui é que ele armazena dados numéricos de forma mais eficiente do que as estruturas de dados integradas do Python. O pacote tem muitos substitutos para as operações matemáticas tradicionais e, uma vez que usa as bibliotecas C, é muito mais rápido do que as funções gerais do python. O NumPy também gerencia com eficiência sua memória para estruturas de dados muito grandes, como listas com um milhão de itens.
O Numpy pode otimizar e economizar até 75% mais espaço do que listas normais de Python. NumPy Array é a única coisa próxima a arrays como em Java ou C e fácil de declarar e usar e, portanto, adere ao compromisso inicial de “Velocidade de desenvolvimento”.
4. Sempre use uma biblioteca C sempre que possível
Como você já viu, o uso de NumPy em conjunto com as bibliotecas C e quão poderoso pode ser. Um conceito semelhante também pode ser aplicado a outras bibliotecas e funções. Bibliotecas Python não são tão eficientes quanto Cones e, portanto, se você tem a opção ou oportunidade de usar uma biblioteca C, sempre escolha a biblioteca C. Eles são mais rápidos e eficientes do que suas respectivas bibliotecas Python. Pitão Ctypes A biblioteca é um excelente exemplo compatível com o tempo de execução Python e aproveita os benefícios do C.
Você pode obter os melhores resultados reduzindo o número de viagens de C para Python, uma vez que a passagem de dados entre eles é uma operação cara. Por exemplo, considere dois cenários em que você está passando um valor de cada vez em um loop para C de Python, calculando e retornando e, de outro modo, passe uma lista para C, faça seu cálculo lá e envie o resultado de volta. Sempre escolha a segunda opção, uma vez que é muito mais rápido e eficiente neste método.
5. Conheça sua biblioteca e suas funções
É muito fácil incluir todas as bibliotecas que você conhece em um código e você nunca terá que se preocupar em importar nada além da prática, essa é uma das piores maneiras de codificar. É análogo a pedir muita comida do que você normalmente consegue lidar e, ao final, você vai se sentir cansado e difícil de terminar. Embora Python possa ser uma linguagem poderosa, não é desculpa para acumular todas as bibliotecas existentes nele apenas para evitar erros. Em vez de, você está corrompendo seu próprio código se estiver importando mais do que as bibliotecas necessárias para o seu código Python. Sempre tenha em mente quais funções você precisa e quais bibliotecas são adicionais. Remova a linha ou comente-os para remover essa sobrecarga e seu código será executado mais rápido.
Notas finais
Agora você conhece algumas dicas e truques sobre como tornar seu código mais rápido e eficiente usando algumas técnicas simples e se tiver mais perguntas, sinta-se à vontade para me contatar em LinkedIn ou se você gosta de movimento browniano geométrico e do mercado de ações, você pode ver outro dos meus artigos aqui. Fique seguro e tenha um bom dia.
A mídia mostrada neste artigo sobre 5 dicas e truques para acelerar seus programas Python não são propriedade do DataPeaker e são usados a critério do autor.