我制作了一个python程序,可从csv读取数据,对其进行排序并使用Plotly显示图形。当我使用.py文件进行测试时,它的运行速度非常快,然后,当我将其转换为.exe时,它开始变慢。这是我的代码
print("Importando modulos")
import os
import pandas as pd
import numpy as np
import glob
import time
import gc
from datetime import datetime
from tkinter import *
from tkinter import ttk
import tkinter.messagebox
import plotly.express as px
print("Modulos Importados")
try:
start_time = time.time()
path = os.path.dirname(os.path.abspath("E3_converter.py"))
def grafic_interface(dicc):
def show(event):
df=dicc[event.widget['text']]
fig = px.line(df, x='Time', y=['B003.AQ',"B004.AQ"])
fig.show()
form=Tk()
form.title("Analisis de Sistema Monitoreado")
form.iconbitmap("D:\Escritorio\pruebas\e3solutionsfinalsolo.ico")
form['background']="#1500b0"
nombre = Label(text='FECHAS\n', fg = '#ffffff',bg = '#1500b0', font = 'Helvetica 16 bold')
nombre.grid(row=1, column=2)
nombre.place(x=150,y=10)
cont=2
i=0
for date in dicc:
if cont%2==0:
data=Button(form,text=str(date))
data.place(x=50,y=70+(30*i))
data.bind("<Button-1>", show)
else:
data=Button(form,text=str(date))
data.place(x=250,y=70+(30*i))
i+=1.2
data.bind("<Button-1>", show)
cont+=1
y=(int(cont)/2)*60
form.geometry("400x"+str(int(y)))
print("--- %s seconds ---" % (time.time() - start_time))
form.mainloop()
LIST_CSV=[]
files=list(glob.glob(path+"\\*.csv"))
if len(files)>0:
df_one=pd.read_csv(files[0])
LIST_CSV.append(df_one)
print("Recolectando datos")
for i in range(1,len(files)):
df_temp=pd.read_csv(files[i])
LIST_CSV.append(df_temp)
print("Uniendo datos")
df=pd.concat(LIST_CSV)
df['Time']= pd.to_datetime(df['Time'])
print("Ordenando datos")
df.sort_values(by='Time')
global_dates=list(df.Time.dt.strftime('%d-%m-%Y').unique())
while (global_dates.count(np.nan)):
global_dates.remove(np.nan)
global_dates.sort(key=lambda date: datetime.strptime(date, "%d-%m-%Y"))
GLOBAL_DICT={}
for date in global_dates:
print("Realizando query fecha: "+str(date))
datetime_object = datetime.strptime(str(date), '%d-%m-%Y')
data=df.loc[(df["Time"].dt.month==datetime_object.month) & (df["Time"].dt.day==datetime_object.day)]
GLOBAL_DICT[str(date)]=data
grafic_interface(GLOBAL_DICT)
else:
print("No existe ningun archivo de extension csv en este folder")
except:
time.sleep(40)
大约需要10分钟!!!给我看第一张照片
当可执行文件首次启动时,它必须加载您在代码开始时编写的所有这些模块。这极大地减慢了您的程序的速度,并导致它花费了额外的时间来加载。但是,当您加载.py
文件时,它改用缓存的.pyc
文件,因此执行速度更快。
一个简单的解决方法是仅导入所需的对象,如下所示:
from time import sleep
...
sleep(1000) # Instead of time.sleep(1000)