进程and主线程and子线程and守护线程的关系

当下面的多线程python程序运行时,主线程运行10秒后结束,t 线程会运行20秒,进程会等待t 线程结束后才会结束。

from threading import Thread
import time

def foo(x):
	for i in range(1, x+1):
		print(i)
		time.sleep(1)
	f = open('text.txt', 'w')
	f.close()

t = Thread(target=foo, args=(20,))
# t.daemon = True
t.start()

time.sleep(10)

当在主线程还没有结束的10秒内按CTRL+C,会发现主线程被终结,但t 线程依然存活,继续打印输出。 

一般情况,进程会等待所有线程结束后结束,主线程结束,子线程会继续运行。

如果把# t.daemon = True的注释去掉让代码生效,t 线程就会被设置为守护进程。程序运行结果是,主线程10秒后结束,t 线程也会随主线程结束而结束,后面的文本文件不会被创建,如果在主线程还没有结束的10秒内按CTRL+C,会把主线程和守护线程一起终结掉。

当有守护线程的时候,进程结束不需要等待守护线程执行完成,其他线程(主线程和子线程)结束后,进程随之结束,守护线程也跟着结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值