专栏名称: python实战
Python实战
目录
相关文章推荐
Python开发者  ·  微信 + DeepSeek = 王炸组合 ·  3 天前  
Python开发者  ·  普通人如何抓住 DeepSeek ... ·  2 天前  
Python开发者  ·  AI 正在培养一代 “文盲程序员” ·  2 天前  
Python爱好者社区  ·  模仿一下领导说话的样子 ·  2 天前  
Python爱好者社区  ·  今年程序员这薪资是认真的吗? ·  3 天前  
51好读  ›  专栏  ›  python实战

官方介绍:python多线程中daemon的属性方法

python实战  · 公众号  · Python  · 2017-03-11 15:25

正文


我们看官方介绍是这样的:


Python学习交流群:330637182

意思就是说:这个属性为一个布尔值,表示是否为一个守护进程,且这个属性设置必须在线程的start方法开始之前调用。它的值继承自主线程,主线程的daemon为False且所有从主线程创建的线程都是daemon = False 。

下面一句说明了,python主程序只有在没有非守护线程的时候才会退出。

我在用多线程的时候和看这些介绍的时候2个疑惑:

  1. 有的多线程主线程结束,其他的线程就结束了(thread方式)。 而有的主线程则阻塞等待其他线程执行完毕才继续执行(threading方法)

  2. 主线程中创建的线程都是非守护线程吗?我们都知道创建线程有最常用的2个方法,分别利用thread和threading模块,那么我们用代码看看实际的执行情况是怎样的。


Python学习交流群:330337182

从上图中我们可以看到,创建的线程输出的daemon是True。 可见问题2是说的不对的。 也就是说在主线程中用start_new_thread创建的线程其实是daemon=True的。这样就可以解释我们的主程序不会等待daemon程序执行完毕这个情况了。通过取消注释sleep语句,我们可以看到主程序执行完毕后其他线程也被销毁了。

那么我们接下来看看利用threading模块创建的程序执行情况如何?







请到「今天看啥」查看全文