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 
    版权声明:本文为博主原创文章,转载请附上博文链接!
    

      



  • 相关阅读:
    查准率(precision)和查全率(recall)
    数据集大全:25个深度学习的开放数据集
    利用贝叶斯算法实现手写体识别(Python)
    KNN算法识别手写数字
    判断点在直线的左右哪一侧
    多节点bigchaindb集群部署
    java 多线程 3 synchronized 同步
    java 多线程 1 “常用的实现多线程的2种方式”:Thread 和 Runnable
    java 字符串
    java 关键字static
  • 原文地址:https://www.cnblogs.com/zz22--/p/11048032.html
Copyright © 2011-2022 走看看