我在Windows 7下使用wxpython GUI编写了一个python(2.7)应用程序。当我运行应用程序时,我看到一个python.exe*32
进程在任务管理器中启动。当我退出应用程序(使用wxpython的Window.Close()
方法关闭GUI窗口)时,python.exe*32
进程仍然存在。当我再次运行应用程序时,第二个python.exe * 32进程启动,它继续运行。每个python.exe*32
进程大约需要180 MB内存,并且会降低计算机速度。
我以这种方式启动我的应用程序:
if __name__ == "__main__":
app = wx.App(False)
frame = MainWindow("MyApp")
frame.Show()
app.MainLoop()
退出应用程序时,如何使python.exe*32
进程终止?
答案 0 :(得分:2)
在代码末尾添加一个sys.exit(1)
,这将为父进程提供一个返回代码,该代码应该终止Python的父代。
注意:
如果您有单独运行的线程,请不要在GUI“关闭”功能之后放置sys.exit(1)
,如果您有任何线程,这将导致数据丢失和“搞砸”打开的套接字。
这是正确的方法:
class MainWindow(wx.Frame):
def __init__(self, title):
wx.Frame.__init__(self, None, title=title, pos=(150,150), size=(350,200))
self.Bind(wx.EVT_CLOSE, self.OnClose)
def OnClose(self, event):
self.Destroy() # or simply do sys.exit(1) here
if __name__ == "__main__":
app = wx.App(False)
frame = MainWindow("MyApp")
frame.Show()
app.MainLoop()
sys.exit(1)