小练习:思考下述代码的执行结果有可能是哪些情况?为什么?

思考下述代码的执行结果有可能是哪些情况?为什么?

 1 from threading import Thread
 2 import time
 3 
 4 def foo():
 5     print(123)
 6     time.sleep(1)
 7     print("end123")
 8 
 9 def bar():
10     print(456)
11     time.sleep(3)
12     print("end456")
13 
14 if __name__ == '__main__':
15     t1=Thread(target=foo)
16     t2=Thread(target=bar)
17 
18     t1.daemon=True
19     t1.start()
20     t2.start()
21     print("main-------")

  分析:

  t1是主线程"main-------"的守护线程,所以在主线程结束后,t1就会结束.主线程在等待t2运行完毕后才会结束,但是t2中有个2秒的延时,t1中有个1秒的延时,这意味着,在等待t2运行结束的这段时间里,t1早就结束了.(也就是说,t1不用等待主线程结束后才结束).所以,上面代码的输出结果应该是:

  

1 123
2 456
3 main-------
4 end123
5 end456

 

转载于:https://www.cnblogs.com/lovepy3/p/9279308.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值