首页 > 试题广场 >

3 [问答]简单叙述线程对象的daemon属性的作用和影响。

[问答题]
简单叙述线程对象的daemon属性的作用和影响。

在脚本运行过程中有一个主线程,若在主线程中创建了子线程,当主线程结束时根据子线程daemon属性的值的不同可能会发生两种情况:

  1. 若过子线程的daemon属性是false, 主线程结束时会检测该子线程是否结束,如果子线程还在运行,则主线程会等待它完成后再退出。
  2. 如果daemon属性是true, 主线程运行结束时不对该子线程进行检测而是直接退出,同时所有daemon值为true的子线程将随主线程一起结束,不论是否运行完成。

属性daemon值默认为False,如果需要修改,必须调用start()方法启动线程之前进行设置,另外注意到恶事,上面的描述并不适合用于 IDLE 环境中的交互模式或者脚本运行模式,因为在该环境中的主线程只是在退出python IDLE时才终止。

影响:

所有的daemon=True的子线程有可能遭遇强制退出,但这时子线程可能正在向标准控制台输出内容,而当前进程已结束,导致标准控制台被释放,子线程无法取得访问权限,从而引发异常。


发表于 2019-06-05 12:25:48 回复(0)
表示这个线程是(True)否(False)守护线程的布尔值。 一定要在调用 start() 前设置好,不然会抛出 RuntimeError 。初始值继承于创建线程;主线程不是守护线程,因此主线程创建的所有线程默认都是 daemon = False。 当没有存活的非守护线程时,整个Python程序才会退出。
发表于 2019-04-08 00:04:04 回复(1)
标识为守护线程,主线程消亡后,守护线程也消亡
发表于 2018-10-30 16:14:30 回复(0)