setDaemon方法

'''
启动线程前设置thread.setDaemon(True) 即 设置该线程为守护线程,
表示该线程是不重要的,进程退出时不需要等待这个线程执行完成。
这样做的意义在于:避免子线程无限死循环,导致退不出程序,也就是避免传说中的孤儿进程。
'''

import threading
from time import ctime, sleep


def listenMusic(name):
    print("Begin listening to %s ------%s" % (name, ctime()))
    sleep(3)
    print("Stop listening ------%s" % ctime())
    
def readBook(title):
    print("Begin reading a %s ------%s" % (title, ctime()))
    sleep(5)
    print('Stop reading ------%s' % ctime())

threads = []
t1 = threading.Thread(target=listenMusic, args=('music',))
t2 = threading.Thread(target=readBook, args=('book',))

threads.append(t1)
threads.append(t2)

if __name__ == '__main__':
    # 效果 == 下一步for循环中t.setDaemon(True)
    # t1.setDaemon(True)
    # t2.setDaemon(True)

    for t in threads:                               # 对列表进行遍历
        t.setDaemon(True)                           # 注意:一定在start之前设置

        t.start()                                   # 启动线程活动

        print(t.getName())                          # 返回线程名
        print("count:", threading.active_count())   # 返回正在运行的线程数量

        # t.join()									# 串行

    t1.join()                                       # 等待t1
    # t1.setDaemon(True)                            # 报错

    print("All Over -------%s" % ctime())
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值