python 多线程之守护线程 threading.Thread(target=xxx,daemon=True)

daemon
一个表示这个线程是(True)否(False)守护线程的布尔值。一定要在调用 start() 前设置好,不然会抛出 RuntimeError 。初始值继承于创建线程;主线程不是守护线程,因此主线程创建的所有线程默认都是 daemon = False。

当没有存活的非守护线程时,整个Python程序才会退出
当只有被设定为 daemon = true的线程存活时,整个程序结束

import threading
import time


def read():
    i = 0
    while True:
        print('i')
        i += 1
        time.sleep(1)


def write():
    while True:
        time.sleep(6)
        break

def test():
    while True:
        print('n')
        time.sleep(2)

if __name__ == '__main__':
    print('test begin...')

    tw = threading.Thread(target=write,daemon=True)
    tr = threading.Thread(target=read, daemon=True)
    tn = threading.Thread(target=test)
    tw.start()
    tr.start()
    tn.start()

虽然我们定义了write在6秒后break,但整个程序没有结束。因为只有test的daemon是false.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值