zoukankan      html  css  js  c++  java
  • 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 
    版权声明:本文为博主原创文章,转载请附上博文链接!
    

      



  • 相关阅读:
    各种sensor名称统计
    数组指针和指针数组的区别
    自己写一个线程池
    git命令总结
    用链表实现队列的功能
    一个free的问题
    生产者消费者问题--进阶2
    影响架构决策的非功能性需求
    从商业角度探讨API设计
    给公司部门设计的SOA架构
  • 原文地址:https://www.cnblogs.com/zz22--/p/11048032.html
Copyright © 2011-2022 走看看