1
resposta

[Dúvida] Executável em Python com mais de 70 Mb e muito lento!

Olá,

Fiz esse código em Python para automatizar uma tarefa no meu serviço:

import os
import time
from tqdm import tqdm
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.edge.service import Service
from openpyxl import load_workbook

diretorio_atual = os.getcwd()

driver_path = os.path.join(diretorio_atual, 'msedgedriver.exe')

service = Service(driver_path)
driver = webdriver.Edge(service=service)

# Acessando a página de autenticação
auth_url = 'https://xxxxxxx..br/'
driver.get(auth_url)

# Acessando a página de login
login_button = driver.find_element("id", "btnExpresso")
login_button.click()

# Autenticando
username_field = driver.find_element("id", "attribute_expresso")
password_field = driver.find_element("id", "password_expresso")

username_field.send_keys("xxxxxxx")
password_field.send_keys("xxxxxxx")

login_button = driver.find_element("id", "btn-expresso-acessar")
login_button.click()

search_url = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
driver.get(search_url)

diretorio_atual = os.getcwd()

arquivo_excel = os.path.join(diretorio_atual, 'protocolos.xlsx')

workbook = load_workbook(arquivo_excel)

planilha = workbook['Planilha1']  

total_protocolos = planilha.max_row - 1

progress_bar = tqdm(total=total_protocolos, desc="Baixando", unit="protocolos")

for linha_excel in planilha.iter_rows(min_row=2, min_col=1, max_col=1, values_only=True):
    protocolos = linha_excel[0]

    # Pesquisa
    search_field = driver.find_element("id", "numeroProtocolo")
    search_field.clear()
    search_field.send_keys(protocolos)
    search_field.send_keys(Keys.RETURN)
    driver.implicitly_wait(3)

    # Download
    link_element = driver.find_element("xpath", "//a[contains(@href, 'downloadVolumeParticionado')]")
    driver.execute_script(link_element.get_attribute("href"))
    time.sleep(2)

    driver.get("https://www.")

    progress_bar.update(1)


progress_bar.close()

print(f"Total de {total_protocolos} baixados!!")

time.sleep(20)

driver.quit()  

Criei um executável com pyinstaller e meu arquivo .exe ficou com mais de 70MB. Ele também ficou lento para executar, clico e demora mais de um minuto para abrir. Depois que abre demorara mais um tempo para rodar, depois que executa vai normal.

O que pode ser? Alguém tem uma dica para criar executáveis leves e rápidos em python?

1 resposta

Olá, Jairo!

Entendo suas preocupações em relação ao tamanho do executável e à velocidade de abertura do seu programa. Para melhorar isso:

Certifique-se de otimizar seu código, remover bibliotecas desnecessárias, eliminar recursos não utilizados, escolher um driver mais leve, usar uma versão mais recente do Python para maior velocidade, gerenciar eficientemente os recursos e desativar o cache de importação durante a criação do executável. Isso deve ajudar a melhorar o desempenho e reduzir o tamanho do seu programa.

Lembre-se de que otimizar código e criar executáveis menores e pode ser maio complexo e até difícil, afinal é difícil melhorar aquilo que achamos que já demos o nosso melhor, mas com paciência e prática, você pode melhorar seu projeto.

Espero que essas dicas o ajudem e reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!