当前位置: 首页 > 面试题库 >

Python线程上daemon属性的含义

朱高超
2023-03-14
问题内容

对于将线程设置为守护程序意味着什么,我有些困惑。

文件说:

线程可以标记为“守护程序线程”。该标志的重要性在于,仅保留守护程序线程时,整个Python程序都会退出。初始值是从创建线程继承的。可以通过daemon属性设置该标志。

我不确定是什么使它与普通线程不同。

这是说该程序永远不会完成吗?

def threadfunc():
    while True:
        time.sleep(1)

threading.Thread(target=threadfunc).start()

即使主线程完成了它的执行。何时会立即完成?

def threadfunc():
    while True:
        time.sleep(1)

th = threading.Thread(target=threadfunc)
th.daemon = True
th.start()

我问是因为我遇到这样一种情况,在我的主线程中我正在调用sys.exit(),并且该进程只是挂起,而其他线程正在运行,正如我所看到的日志。

这与在活动线程中调用sys.exit()有什么关系吗?


问题答案:

这是说该程序永远不会完成吗?

是的,该程序无法完成,只需尝试一下即可。

我问是因为我遇到这样一种情况,在我的主线程中我正在调用sys.exit(),并且该进程只是挂起,而其他线程正在运行,正如我所看到的日志。这与在活动线程中调用sys.exit()有什么关系吗?

是的,即使exit不停止其他线程,它只会SystemExit在主线程中引发。因此,尽管主线程将停止(就像在其他任何未处理的Exception上一样),所有其他非守护线程将继续工作。



 类似资料:
  • 在我们的应用程序中,我们使用Hystrix,因为我们调用了几个外部服务。我们希望为我们调用的每个外部服务配置一个具有特定大小的线程池。 假设有三个外部服务,称为S1、S2、S3。此外,我们有10个扩展的类,称为C1到C10。 C1和C2调用S1,应该使用相同的线程池,有15个线程。在C1的构造函数内部,我们对进行以下调用: 在一个命令(C1)的构造函数中,我们将S1的线程池大小指定为15。是一个自

  • 我正在用JMeter运行一个分布式负载测试,需要对这三个设置进行澄清:线程数、爬升周期和循环计数。 JMeter集群中所有服务器上分布的线程数是多少?假设我有4台JMeter服务器,并具有以下参数: 在这种情况下,每个服务器上启动12个线程还是3个线程? 谢谢你,伊恩

  • 本文向大家介绍Java线程之守护线程(Daemon)用法实例,包括了Java线程之守护线程(Daemon)用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java线程之守护线程(Daemon)用法。分享给大家供大家参考。具体如下: 守护线程(Daemon) Java有两种Thread:“守护线程Daemon”与“用户线程User”。 我们之前看到的例子都是用户,守护线程是一种“在后

  • 我发现 _A 是可以访问的但是 __B 是无法访问的会报错:Unexpect System Error:'A' object has no attribute .... 不是说下划线只是约定而已么,怎么其实还是有实际作用的

  • 线条属性概述 线条的属性共有以下四个: 1、lineCap属性 lineCap 定义上下文中线的端点,可以有以下 3 个值。 butt:默认值,端点是垂直于线段边缘的平直边缘。 round:端点是在线段边缘处以线宽为直径的半圆。 square:端点是在选段边缘处以线宽为长、以一半线宽为宽的矩形。 2、lineJoin属性 lineJoin 定义两条线相交产生的拐角,可将其称为连接。在连接处创建一个

  • 本文向大家介绍python daemon守护进程实现,包括了python daemon守护进程实现的使用技巧和注意事项,需要的朋友参考一下 假如写一段服务端程序,如果ctrl+c退出或者关闭终端,那么服务端程序就会退出,于是就想着让这个程序成为守护进程,像httpd一样,一直在后端运行,不会受终端影响。 守护进程英文为daemon,像httpd,mysqld,最后一个字母d其实就是表示daemon