python - 使用 PyInstaller 创建的应用程序启动缓慢

标签 python windows performance pyinstaller

我有一个用 Python 编写并使用 PyInstaller“编译”的应用程序。它还使用 PyQt 作为 GUI 框架。

在主窗口加载并显示之前,运行此应用程序有大约 10 秒的延迟。据我所知,这不是由于我的代码运行缓慢。相反,我怀疑这是由于 Python 运行时初始化造成的。

问题是这个应用程序是使用自定义启动器/任务栏应用程序启动的。用户将单击按钮以启动应用程序,看到没有任何反应,然后单击另一个应用程序的其他位置。当我的应用程序显示它的窗口时,由于 SetForegroundWindow 的规则,它无法进入前台。

我可以访问 PyInstaller win32 加载程序、Python 代码甚至启动器代码的源代码。

我的问题是:

  • 如何让这个应用程序启动更快?

  • 如何衡量进程生命周期的前几秒所花费的时间?

  • 在显示第一个窗口之前,普遍接受的缩短时间的技术是什么?

我想避免添加启动画面有两个原因 - 一,我认为它不会有帮助(开销是在 Python 代码运行之前),二,我只是不喜欢启动画面 :)

如果需要,我可能会编辑 PyInstaller 加载程序 stub 以创建一个窗口,但这是我不想采取的另一条路线。

最佳答案

我怀疑您使用的是 pyinstaller 的“一个文件”模式——这种模式意味着它必须在应用程序启动之前将所有库解压到一个临时目录。在 Qt 的情况下,这些库非常大,需要几秒钟来解压缩。尝试使用“一个目录”模式,看看是否有帮助?

关于python - 使用 PyInstaller 创建的应用程序启动缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469932/

相关文章:

python - 如何从 nltk 分类器中获取精度和召回率?

java - 从 Java ProcessBuilder 运行 OpenMPI 进程时,ompi_evesel->dispatch() 失败

windows - 使用 GLUT 和 MinGW 的 undefined reference

PHP MySQL INSERT 1-3,000 行尽可能快速高效

Javascript - 使用数组传递变量

python - 也许我需要导出路径但不确定

python - 用值填充张量中的特定索引

python - 使用 numpy 填充数组

java - 如何在 Windows 上的 jenkins 中编译和运行一个简单的 java 文件

javascript - 解决 CountNonDivisible 代码问题