我在尝试关闭我的应用程序时遇到了麻烦。截至目前,我的应用程序当前生成并运行在while循环中的线程(而True循环),而我的主线程初始化并在PyQT中运行UI。
def main():
group_size = 8
buffer_size = 4
app = QtGui.QApplication(sys.argv)
dgui = DirectGui(group_size, buffer_size)
engine = KCluster_Engine(group_size, buffer_size)
dgui.set_engine_ref(engine)
engine.assign_interface(dgui)
thread = Thread(target = engine.start)
thread.start()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
当我在PyQT中关闭应用程序的主窗口时,即使使用ctrl-c,也无法停止在shell中生成python脚本的命令。
处理此行为的最佳方法是什么?当我关闭我的应用程序时,我也希望生成的线程停止,加入并退出此过程。我该怎么做?
答案 0 :(得分:2)
根据Python标准库,您有两种方法可以杀死您的线程:
thread.daemaon = True
)而且它会在没有任何正确清洁的情况下被杀死Event
,您在线程中的适当位置进行测试但我认为你应该在SO中查看这个较旧的(但仍然是现实......)问题:Is there any way to kill a Thread in Python?
所有这些都假设app.exec_()
在主线程中正确返回。
答案 1 :(得分:1)
如果您使线程守护进程,它将在您退出应用程序后停止。
在启动之前放置thread.daemon = True
(如果在调用start之后执行它将引发异常)。它应该可以与线程模块中的线程一起使用。