直接上代码:
import threading
import time
def worker(num):
"""
thread worker function
:return:
"""
# time.sleep(1)
# 当我注释掉休眠一秒的语句之后,才能够正常显示打印语句
print("The num is %d" % num)
return
for i in range(20):
t = threading.Thread(target=worker,args=(i,),name=“t.%d” % i)
t.start()
如果不注释掉sleep这一行,IDE的执行如下图:
注释掉之后如下图:
很好奇,这是什么原因导致的?求解释,谢谢。
终端和调试控制台
更新
首先声明在我的Ubuntu16.04,python3.5下面没有你说的这种情况,所以我猜怀疑你贴的图片。
还有,提问请把代码贴正确,你代码中有的标点符号都是错的,没有人想帮你改标点错误。
回答
为了重现你的问题
我修改了一下:
原因
我显式地设置了创建的线程为daemon,即你说的守护线程,查看threading文档可知
当所有的非daemon线程退出的时候python程序退出.而主线程是默认非daemon
所以加不加sleep程序运行结果应该是一样的。
至于你的结果和我的结果不一样,我暂时只能归结为各个平台的实现不同了。