Python 2.7 启动完全独立于启动流程的流程

Python 2.7 启动完全独立于启动流程的流程,python-2.7,pyqt4,py2exe,python-multiprocessing,cherrypy,Python 2.7,Pyqt4,Py2exe,Python Multiprocessing,Cherrypy,您好,我有一个gui应用程序,一个简单的绘图程序,用PyQt4、Python2.7编写,在Windows上运行,下面是一个摘录 if __name__ == "__main__": app=QApplication(sys.argv) paint_app=main_paint_editor()#instantiate the gui paint_app.show() app.exec_() 这将使gui作为主线程启动。一旦UI启动并运行,就会有一个按钮用来启动F

您好,我有一个gui应用程序,一个简单的绘图程序,用PyQt4、Python2.7编写,在Windows上运行,下面是一个摘录

if __name__ == "__main__":
    app=QApplication(sys.argv)
    paint_app=main_paint_editor()#instantiate the gui
    paint_app.show()
    app.exec_()
这将使gui作为主线程启动。一旦UI启动并运行,就会有一个按钮用来启动Flask应用程序(CherryPy)

这是通过gui中的信号插槽连接完成的,即

QtCore.QObject.connect(my_webserver_button,QtCore.SIGNAL("triggered()"),lauch_the_server)
启动服务器的功能旨在为flask应用程序启动一个单独的进程。由于gui和flask应用程序之间没有真正的依赖关系,我真的希望使用单独的进程,而不是线程。 此外,在进行实验时,在这种特定情况下使用线程会使我的paint gui结巴。因此,我的目标是建立一个单独的过程

为了在自己的进程中启动webserver和flask应用程序,我有

from cherrpy import wsgiserver
from multiprocessing import Process

def launch_the_server(self):
    flask_process=Process(target=start_cherrypy, name="local_webserver")
    flask_process.start()
    flask_process.join()

def start_cherrypy(self):
    localwsgi_server=wsgiserver.CherryPyWSGIServer(('localhost',1234),flask_app,numthreads=10,server_name="paintserver")
    localwsgi_server.start()
当我使用eclipse在调试模式下运行时,这很好。我得到一个单独的过程,烧瓶应用程序运行良好。 但是,当我使用py2exe构建整个应用程序的可执行文件时, 这根本不起作用。 我确实得到了一个运行的应用程序,但是当我尝试启动web服务器时,什么也没有发生。我在exe中放了两条调试消息,但没有一条被打印出来

起初我认为这可能是一个棘手的问题,所以我用一些简单的东西来替换代码,即启动一个只向文本文件写入“hello”的进程 可执行文件中没有发生任何事情,尽管它在Eclipse调试器中运行良好


如何从现有GUI应用程序中启动单独的进程来运行附加功能,例如启动flask应用程序?还是将文本写入文本文件?

这个答案对我很有用

主要是

import multiprocessing

if __name__ == '__main__':
    multiprocessing.freeze_support()

这个把戏看起来更像是py2exe的怪癖。感谢大家的关注

这个答案对我很有用

主要是

import multiprocessing

if __name__ == '__main__':
    multiprocessing.freeze_support()

这个把戏看起来更像是py2exe的怪癖。感谢大家的关注

您是在寻找双叉吗?您是在寻找双叉吗?