当我退出应用程序时如何终止python.exe * 32进程?

时间:2013-12-18 08:33:59

标签: python windows memory process

我在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进程终止?

1 个答案:

答案 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)