今天突然觉得join函数好陌生 忘了是干嘛了的,所得花点回顾了一下。
了解线程的知识 请点 --->> 了解更多的线程知识
想要彻底了解join()就要先理解守护线程:
守护线程的工作方式类似服务器,只要没有客户端发来请求,就一直运行并且保持空闲,很像是后台。threading模块建立的线程除了守护线程之外,其余的线程都会在主线程结束之前结束掉。也就是说一般会先解决非守护线程的,所以相比而言,守护线程好像就“没那么重要”。设置守护线程使用,要在线程启动之前就设置好
接下来是join():
threading模块中join()的作用是为了防止子线程没结束主线程就先结束了,join()对于创建的普通的线程(除了守护线程)是没有多大作用的,有跟没有一样,都是要等到子线程结束后才会执行主线程。守护线程相比普通的线程显得“没有那么重要”,所以主线程一般不等它结束就先结束了。如果是作为守护线程使用join(),那么就会等待守护线程结束后才会执行主线程。
下面请看非守护线程使用join(),不使用join(),以及守护线程使用join()和不使用的具体实例
1.非守护线程不使用join()
from threading import Thread
import time
def dance(num):
for i in range(num):
print("正在跳舞", i)
time.sleep(2)
def sing(num):
for i in range(num):
print("正在唱歌", i)
time.sleep(2)
def main():
t1 = Thread(target=dance, args=(3,))
t2 = Thread(target=sing, args=(3,))
t1.start()
t2.start()
if __name__ == '__main__':
main()
print("程序结束了")
执行结果: