python 之多线程join()

join()其实就是阻塞线程,控制线程的执行,从而控制住代码的执行顺序。

参照这篇文章:python3对多线程join的理解

通常都是,线程join()后,顺序执行join()后面的代码,如下面的例子:

def main():
    print('---main begin----')
    t1 = threading.Thread(target=T1_job, name='T1')
    t2 = threading.Thread(target=T2_job, name='T2')
    t1.start()
    t2.start()

    t2.join()
    print("t2 done")

    t1.join()
    print("t1 done")

    print('---main end----')
--------------------- 
作者:阿常呓语 
来源:CSDN 
原文:https://blog.csdn.net/u010339879/article/details/86506450 
版权声明:本文为博主原创文章,转载请附上博文链接!

 t1和t2的开始顺序由系统决定,谁都可能先开始执行,如代码,t2.join(),print("t2 done")在先,而t1.join() print("t1 done")在后,则按照代码顺序,一定是print("t2 done")先执行,而 print("t1 done")后执行。当然这里在没有设定线程的等待时间timeout时,应该是按照线程运行完毕后在执行下一行代码。即t2运行完了,执行print("t2 done"),接着等t1执行完毕, print("t1 done")执行,最后print('---main end----')执行。可见,join()其实就是阻塞线程,控制代码的执行顺序的。当然,线程在执行时是并发的,只不过是他们的结束是按照join()的顺序来控制的。运行结果如下:

---main begin----
T1 start
begin sleep 0.1s
T2 start
T2 finish
t2 done
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
begin sleep 0.1s
T1 finish
t1 done
---main end----

--------------------- 
作者:阿常呓语 
来源:CSDN 
原文:https://blog.csdn.net/u010339879/article/details/86506450 
版权声明:本文为博主原创文章,转载请附上博文链接!

  



 

posted @ 2019-06-18 21:50  樟樟22  阅读(1164)  评论(0编辑  收藏  举报