2

我用 Python 构建了一个网络爬虫应用程序。它由三个主要部分组成:

  1. GUI(基于 tkinter 构建)
  2. 客户端(控制前端和后端之间的接口)
  3. 后端代码(各种线程化进程)。

我遇到的问题是,当用户点击 X 退出程序而不是通过界面退出时,似乎 root.destroy() 永远不会被调用并且应用程序永远运行,即使窗口确实消失了。这最终会消耗大量的系统资源。

我尝试将所有线程设置为 Daemon,但没有取得多大成功。退出后程序会继续占用CPU的任何其他原因吗?

4

1 回答 1

2

您不想将所有线程设置为daemon. 您想将客户端线程和后端线程设置为守护进程。这样,当 GUI 线程终止时,daemon设置为True结束的线程也将结束。

文档中:

可以将线程标记为“守护线程”。这个标志的意义在于,当只剩下守护线程时,整个 Python 程序就退出了。

于 2013-01-10T18:59:25.127 回答