我用 Python 构建了一个网络爬虫应用程序。它由三个主要部分组成:
- GUI(基于 tkinter 构建)
- 客户端(控制前端和后端之间的接口)
- 后端代码(各种线程化进程)。
我遇到的问题是,当用户点击 X 退出程序而不是通过界面退出时,似乎 root.destroy() 永远不会被调用并且应用程序永远运行,即使窗口确实消失了。这最终会消耗大量的系统资源。
我尝试将所有线程设置为 Daemon,但没有取得多大成功。退出后程序会继续占用CPU的任何其他原因吗?
您不想将所有线程设置为daemon
. 您想将客户端线程和后端线程设置为守护进程。这样,当 GUI 线程终止时,daemon
设置为True
结束的线程也将结束。
从文档中:
可以将线程标记为“守护线程”。这个标志的意义在于,当只剩下守护线程时,整个 Python 程序就退出了。