没有join
import threading, time
def fun():
print("线程开始")
print("我是线程%s" % threading.current_thread())
for i in range(10):
time.sleep(1)
print("线程结束")
if __name__ == '__main__':
t = threading.Thread(target=fun, name="TTY")
t.start()
# t.join()
print('我好了')
输出结果:
线程开始
我好了
我是线程<Thread(TTY, started 123145546027008)>
线程结束
用图像理解

黑色的是主线程
蓝色是线程TTY
因为主线程提前结束所以 我好了 这句话先出现
最后才出现线程TTY的 线程结束
再看另一种情况
import threading, time
def fun():
print("线程开始")
print("我是线程%s" % threading.current_thread())
for i in range(10):
time.sleep(1)
print("线程结束")
if __name__ == '__main__':
t = threading.Thread(target=fun, name="TTY")
t.start()
t.join()
print('我好了')
区别是加入了join
Join函数的文档解释是:一直等到线程结束
运行结果:
线程开始
我是线程<Thread(TTY, started 123145365737472)>
线程结束
我好了
主线程不会继续往前,而是等待,等到TTY结束再继续往前。所以看到结果“我好了”出现在最后