Python 守护线程
有时需要在后台执行任务。守护线程是用于后台任务的一种特殊类型的线程,称为 守护线程 。换句话说,守护线程在后台执行任务。
值得注意的是,守护线程执行的是非关键任务,尽管这些任务对应用程序可能有用,但如果它们失败或在操作过程中被取消,不会对它造成影响。
此外,守护线程无法控制其何时被终止。一旦所有的非守护线程完成,程序将终止,即使此时仍有守护线程在运行。
这是守护线程和非守护线程之间的一个重要区别。只有守护线程在运行时,进程才会退出;而如果至少有一个非守护线程在运行,进程将无法退出。
守护线程 | 非守护线程 |
---|---|
如果只有守护线程在运行(或者没有线程在运行),进程将退出。 | 如果至少有一个非守护线程在运行,进程将不会退出。 |
创建守护线程
要创建守护线程,您需要将 daemon 属性设置为 True。
如果创建一个没有任何参数的线程对象,也可以在调用start()方法之前将其守护属性设置为True。
示例
请看下面的示例:
它将产生以下 输出 −
守护线程可以执行支持程序中的非守护线程的任务。例如 –
- 在后台创建一个存储日志信息的文件。
-
在后台执行网络爬虫。
-
在后台自动将数据保存到数据库中。
示例
如果运行中的线程被配置为守护线程,则会引发RuntimeError。请参考以下示例:
它将产生以下输出 –