我有一个相当复杂的python应用程序,它使用numpy,pandas,PySide,pyqtgraph和matplotlib等软件包。当我在Windows上将应用程序与cx_Freeze捆绑在一起时,它的容量为349MB。
我的问题是生成的可执行文件的启动时间很长,大约15秒。当我说启动时,我指的是任何代码执行之前的时间量。我有一个简单的脚本,可以向控制台输出“Hello”,甚至需要15秒才能运行。
有没有人知道这个问题的解决方案,或者任何调试方法?它是否很慢,因为来自这么多软件包的文件太多了?
编辑: 使用一个名为Process Montor的强大工具,我将我的问题缩小到了pytz模块。在一个特定的负载上,20秒用于查询library.zip(其中cx_Freeze将所有已编译的字节码放入)为pytz zoneinfo!我最近添加了pandas作为依赖项,pandas使用了pytz。
有关Process Monitor输出的示例,请参阅此图片:
答案 0 :(得分:6)
我找到的解决方案是使用Process Monitor来查看cx_Freeze是否在不合理的时间内加载模块。使用该工具,我还发现加载特定的matplotlib字体需要很长时间(可能是4秒)。我删除它,我的应用程序工作正常。