为什么python可执行文件在windows上调用multiprocessing模块时会打开新的窗口实例

简短的问题:为什么python可执行文件生成的pyinstaller打开新的窗口实例时,多function处理模块被称为在Windows操作系统

我有一个使用pyside编写的GUI代码。 当我们点击简单button时,它将在另一个进程中计算阶乘(使用多处理模块)。 它运行正常,当我运行python程序。 但是,我使用PyInstaller创build可执行文件后,当我运行使用exe时,它正在创build新的窗口,当多function处理模块被调用。 这里是代码和一步一步的过程来重现问题。

码:

import sys import multiprocessing from PySide import QtGui from PySide import QtCore def factorial(): f = 4 r = 1 for i in reversed(range(1, f+1)): r *= i print 'factorial', r class MainGui(QtGui.QWidget): def __init__(self): super(MainGui, self).__init__() self.initGui() def initGui(self): b = QtGui.QPushButton('click', self) b.move(30, 30) b.clicked.connect(self.onClick) self.resize(600, 400) self.show() def onClick(self): print 'button clicked' self.forkProcess() def forkProcess(self): p = multiprocessing.Process(target=factorial) p.daemon = True p.start() if __name__ == "__main__": print 'ok' app = QtGui.QApplication(sys.argv) ex = MainGui() sys.exit(app.exec_()) 
  1. 使用Windows命令提示符或power shell运行上述代码

    pyinstaller.exe gui.py

  2. 打开dist / gui / gui.exe(dist \ gui \ gui.exe)。 你将有一个窗口打开

在这里输入图像说明

当我们点击button点击它的计算阶乘,但创build一个新的窗口实例。 有点奇怪。 当我在创build可执行文件或在Linux上执行程序时,不会发生这种情况。 只有当我执行生成的python可执行文件时才会发生这种情况

点击button后,屏幕截图

在这里输入图像说明

Solutions Collecting From Web of "为什么python可执行文件在windows上调用multiprocessing模块时会打开新的窗口实例"