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

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

 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

猜你喜欢

转载自www.cnblogs.com/lovepy3/p/9279308.html