PyQt应用程序正常关闭,但进程未被杀死?
我刚发现,当我运行一个pyqt应用程序并关闭它时,虽然应用程序关闭了,但后台的进程仍然在运行。看起来即使我关闭了应用程序,那个进程也没有结束。
Traceback (most recent call last):
File "F:\Projects\XYZ\XYZ\XYZ.py", line 414, in <module>
sys.exit(app.exec_())
SystemExit: 0
我在网上查了一下,发现如果返回值是0,那就表示正常结束。但是你可以看到,随着我运行应用程序,进程一直在增加。
那我该怎么解决这个问题呢?
3 个回答
1
你试过以下方法吗?
sys.exit(app.exec_)
这是PyQt开发者常用的一种做法,也是一个简单的方式来干净利落地退出你的程序。不过,你应该把Python升级到2.7版本或3.3版本。
7
解决方案
这是我找到的一个快速解决办法,可以用来解决这个问题。
import psutil, os
def kill_proc_tree(pid, including_parent=True):
parent = psutil.Process(pid)
for child in parent.children(recursive=True):
child.kill()
if including_parent:
parent.kill()
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow() # <-- Instantiate QMainWindow object.
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
app.exec_()
me = os.getpid()
kill_proc_tree(me)