Joh*_*ver 4 python windows dll cx-freeze
我有一个相当复杂的python应用程序,它使用numpy,pandas,PySide,pyqtgraph和matplotlib等软件包.当我在Windows上将应用程序与cx_Freeze捆绑在一起时,它的容量为349MB.
我的问题是生成的可执行文件有很长的启动时间约15秒.当我说启动时,我指的是任何代码执行之前的时间量.我有一个简单的脚本,可以向控制台输出"Hello",甚至需要15秒才能运行.
有谁知道这个问题的解决方案,或任何调试方法?它是否很慢,因为有这么多包中有这么多的.dll文件?
编辑:使用一个名为Process Montor的伟大工具,我已经将我的问题缩小到了pytz模块.在一个特定的负载上,20秒用于查询library.zip(其中cx_Freeze将所有编译的字节码放入)为pytz zoneinfo!我最近添加了pandas作为依赖项,而pandas使用了pytz.
有关Process Monitor输出的示例,请参见此图片:

我找到的解决方案是使用Process Monitor来查看cx_Freeze是否在一段不合理的时间内加载模块.使用该工具,我还发现加载特定的matplotlib字体需要很长时间(可能是4秒).我删除它,我的应用程序工作正常.