没有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结束再继续往前。所以看到结果“我好了”出现在最后

本文通过两个实例,详细解析了Python中线程的运行机制及join函数的作用。对比了使用与未使用join函数时,主线程与子线程执行顺序的差异,帮助读者深入理解线程同步。

741

被折叠的 条评论
为什么被折叠?



