我用 Python 构建了一个网络抓取应用程序。它由三个主要部分组成:
- GUI(基于 tkinter 构建)
- 客户端(控制前端和后端之间的接口(interface))
- 后端代码(各种线程进程)。
我遇到的问题是,当用户点击 X 退出程序而不是通过界面退出时,似乎 root.destroy() 永远不会被调用,并且应用程序永远运行,即使窗口确实消失了。这最终会消耗大量的系统资源。
我尝试将所有线程设置为守护进程,但没有取得太大成功。还有其他原因导致程序退出后继续占用 CPU 吗?
最佳答案
您不想将所有线程设置为守护进程
。您想将客户端线程和后端线程设置为守护进程。这样,当 GUI 线程终止时,daemon
设置为 True
的线程也会结束。
来自documentation :
A thread can be flagged as a “daemon thread”. The significance of this flag is that the entire Python program exits when only daemon threads are left.
关于python - 关闭时进程不会结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14265223/