1、线程的join()方法意味着在线程完成后,程序将向下运行。让我们来看看下面的例子
fromthreadingimportThread t=time.time() for_inrange(5): th=Thread(target=myfun) th.start() th.join()print(time.time()-t) #结果为5.0047078132629395秒
2、在这里,start()之后,立即join(),这意味着每个线程在下一个循环之前都必须运行结束,这与不使用多线程没有区别。但是,如果需要计算多线程运行时间,则需要使用此join()
我们先来看看不需要join()的情况。
fromthreadingimportThread t=time.time() for_inrange(5): th=Thread(target=myfun) th.start()print(time.time()-t) #结果为0.0009980201721191406秒
3、它甚至没有等一秒钟就输出了结果,5个2是在打印后输出的。这是因为print(time.time() - t)它不同于5个循环线程以外的第6个线程。它不会等到5个线程运行结束后才开始运行。因此,我们无法获得上述5个线程的运行时间。我们需要等待5个线程结束。
代码如下
fromthreadingimportThread t=time.time()ths=[] for_inrange(5): th=Thread(target=myfun) th.start() ths.append(th)forthinths: th.join()print(time.time()-t #结果为1.0038363933563232
join()不仅仅是用于这种情况。当一步代码运行依赖于之前的代码运行时,应添加join()命令。
以上是python多线程中join的应用场景,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。