Python se tornará mais veloz do que nunca? Pois esta é a proposta…

… de Pablo Galindo (desenvolvedor do Python): aumentar a sua performance, sem sacrificar a compatibilidade! Apesar de ser uma linguagem de programação interpretada, Python adota alguns recursos interessantes para melhorar performance dos programas escritos nesta linguagem, especialmente no que concerne a utilização de bibliotecas & módulos: além da própria biblioteca padrão ser compilada em C, o Python também gera bytecodes durante a importação dos módulos, para que sejam executados nativamente em uma máquina virtual (PVM)…

“Importing modules in Python is both a boon and a pain. A boon, because a few import statements can hugely extend the functionality of a program, but a pain because the symbols imported might never get used, potentially increasing the start-up time. A good example of this would be invoking a program from the command line with something like –help and having to wait while imports are loaded that aren’t required. As a solution, lazy imports defer things until they are actually needed.”

— by The Register.

E em breve, a sua performance terá melhorias relacionadas aos tempos de inicialização, que por sua vez se tornarão mais rápidos com a aprovação da PEP 810, intitulada “Importações preguiçosas explícitas” (Explicit lazy imports). A proposta, apresentada por Pablo Galindo (um dos principais desenvolvedores) foi aprovada no início da semana (3/nov) e irá permitir que os scripts adiem o carregamento de bibliotecas importadas até que sejam realmente necessárias, em vez de carregá-las todas no início da execução do programa.

A nova proposta resolve um problema que há tempos, é uma bela dor de cabeça para desenvolvedores. Embora a importação de módulos estenda muito a funcionalidade de um programa, ela também pode aumentar o tempo de inicialização, especialmente se os recursos importados nunca forem usados. Um exemplo clássico é invocar um programa pela linha de comando com o argumento “–help” e ter que esperar o carregamento de importações desnecessárias para aquela simples tarefa.

A ideia de “importações preguiçosas” (lazy imports) não é nova, e várias soluções alternativas já existem, mas nenhuma estava integrada à linguagem Python. Uma tentativa anterior (PEP 690) foi rejeitada por tornar esse comportamento o padrão, o que gerou preocupações em relação a compatibilidade com versões anteriores e a fragmentação da comunidade. A nova proposta foi bem-sucedida por tornar o recurso “opt-in” (opcional), preservando assim a compatibilidade.

A proposta gerou um debate intenso, com +450 comentários. Ao aprovar a medida, o Conselho Diretor do Python afirmou que a PEP 810 atinge “exatamente o equilíbrio certo” para um recurso que a comunidade desejava há muito tempo. Embora ainda leve um tempo para que a novidade chegue aos desenvolvedores, a expectativa é alta entre aqueles frustrados com longos tempos de carregamento.

Só espero que até lá, eu já esteja “preparado” para usa-lo… &;-D