【问题标题】:PyInstaller executable is not working if using multiprocessing in pyqt5 [closed]如果在 pyqt5 中使用多处理,则 PyInstaller 可执行文件不起作用 [关闭]
【发布时间】:2022-01-21 14:01:33
【问题描述】:

我正在从事与 pyqt5 GUI 相关的项目。我使用 multiprocessing 使其更快。当我在编辑器中运行我的程序时,它工作正常。 但是,当我使用 pyinstaller 将我的程序转换为可执行文件时,然后在通过该可执行文件运行程序时,它无法正常工作。 GUI 会打开,但一旦涉及到代码的多处理部分就会关闭(我通过放置一些打印语句来了解这一点)

我也试过mutiprocessing.freeze_support(),还是不行。

如果我删除多处理,通过可执行程序的程序可以正常工作,但我需要使用多处理来使其更快。

有什么建议吗?

【问题讨论】:

  • 欢迎来到 Stackoverflow。您需要提供更多信息,即您的代码,以便我们提供任何帮助。请阅读how to ask a good question
  • 这是有史以来最棘手的问题,只要确保只有主进程在调用 qt,并且确保,我的意思是了解您的操作系统上多处理的整个实现以及所有与 qt 相关的函数和为了绝对确定,在您的操作系统上进行多处理工作,否则您会遇到分段错误......或者只是放过自己,不要使用多处理。

标签: python python-3.x multiprocessing pyqt5 pyinstaller


【解决方案1】:

前段时间我也遇到过同样的问题,我推荐使用Nuitka,因此它支持多处理。如果问题持续存在,请尝试使用threading 库:

from threading import Thread
def worker(a,b):
    while True:
        print(a+b)
        a+=1
my_thread = Thread(target = worker, args = [10,20])
my_thread.start()

如果你想在某个点终止线程,你也可以设置一个类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 2021-08-16
    • 2018-05-14
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多