Avançar para o conteúdo principal

Python - Tempos de execução

Python - Tempos de execução

Nas aplicações Python que tenho passado para executável nota-se uma demora significativa até ao arranque.

Nas últimas aplicações que tenho construído em Python uso o Tkinter para a interface gráfica. No entanto não é a biblioteca de interface gráfica que é a responsável pela demora no arranque das aplicações.

No meu disco, na fase de programação ou utilização costumo usar a inicialização da aplicação em script tal qual, ou seja executo o programa com duplo clique no ficheiro py ou através da linha de comandos 


Por exemplo o comando seguinte abre a aplicação num ou dois segundos:

python entreeixos2.py



Para disponibilizar a aplicação a terceiros, há que criar um executável, com o comando

pyinstaller entreeixos2.py

É criado um pacote com as dependências necessárias à execução do programa. Com duas pastas de Build e Dist:


Na pasta Build encontra-se o executável para onde podem copiar as imagens que entram na aplicação.

A execução demora um par de segundos. Nada de muito diferente de correr o script directamente. O caso é que assim temos uma subpasta _internal com os recursos. No meu caso 27Mb e 956 ficheiros:



Uma outra opção é criar o executável com o comando

pyinstaller --onefile entreeixos2.py

Qeu compacta tudo num só ficheiro e é mais fácil para distribuir. Também há que copiar as imagens para a pasta do exe. A execução desta aplicação tarda uns 5 segundos. Se estiver a funcionar desde uma localização de rede pode demorar meio minuto.



A criação de um exe por estes meios, em Python, não cria um verdadeiro exe como esperaríamos. Cria um pacote com todas as dependências necessárias para a execução do script.

Como se escreve no site:

PyInstaller reads a Python script written by you. It analyzes your code to discover every other module and library your script needs in order to execute. Then it collects copies of all those files – including the active Python interpreter! – and puts them with your script in a single folder, or optionally in a single executable file.

https://pyinstaller.org/en/stable/operating-mode.html


A opção para criar um exe "nativo", que também não o é verdadeiramente é o .NET, pois tamb+em cria uma linguagem intermédia.

Outras opções são o Neutralino, Electro, Tauri para linguagems "Web".



Comentários

Mensagens populares deste blogue

ISPOL - Representação de Gabaris

ISPOL - Representação de Gabaris No ISPOL podemos representar ao longo do traçado um contorno e até realizar variações. A representação de um contorno ou gabari pode ser realizada no ISPOL de um modo simples, usando por exemplo um Símbolo (bloco) da biblioteca, ou um ou vários criados à medida para atender aos casos necessários. Na imagem abaixo um exemplo da biblioteca do ISPOL, representado no perfil transversal. Estas secções são constituídas por símbolos/blocos: Podem-se desenhar ao longo do eixo proporcionando a vista típica destas situações, uma espécie de sólido que enche o traçado. Além desta representação "simples" o ISPOL permite realizar transições entre símbolos diferentes, por exemplo para representar os diferentes gabaris em recta e curva. Ou outras situações que se achem necessárias. Permite ainda condicionar a representação destes símbolos por valores de raio. Isto é para um determinado raio. Pode ser usado para indicar de forma automática ao programa que em r...

Python - Automatização em ISPOL

Python - Automatização em ISPOL Com o uso de PyAutoGui podemos automatizar tarefas repetitivas no ISPOL ISTRAM. No trabalho actual, é necessário converter mais de 300 ficheiros. Já houve um trabalho prévio de ler e transformar dados de directrizes em Excel para ficheiros compatíveis com a conversão presente. Este trabalho prévio foi também feito com programação. Tendo os muitos ficheiros com formato TXT que o ISPOL pode ler e converter para CEJ, é necessário ir ao menu de Conversores do ISTRAM e digitar os dados para ler a localização dos ficheiros, número de eixo etc... um trabalho repetitivo. Sendo repetitivo uma hipótese que deve surgir é se existe forma de automatizar / programar. O ISTRAM ISPOL não permite o uso de plugins (como o CAD), por tanto a via seria pela automatização dos movimentos. O pacote PyAutoGUI para Python permite esta simulação de movimentos. https://pyautogui.readthedocs.io/en/latest/ Basicamente "guiamos" o cursor para onde deve clicar e o que introdu...

Kinematic Envelope - Vários exemplos

Kinematic Envelope - Vários exemplos Adiciono uma pequena lista de desenvolvimentos sobre o assunto de Gabaritos ferroviários. Para mais informação veja outros posts. AECOM Desenvolvimento no Civil 3D ao que parece, com dynamo. Não se percebe com que norma. https://youtu.be/BdRDICErJJ8?si=0MD8xGx_W1PCG5dP Mehdi Taheri Plataforma independente, não se conhece sobre que normativa. https://www.youtube.com/watch?v=LXUusfK25bs 12D Provavelmente é algo similar à AREMA, 12D é uma empresa da Austrália, creio https://www.youtube.com/watch?v=OQnaDt7IOXw