• threading的join功能


    you can go here to see the details.

    我的理解:使用join后,使主线程执行完后(挂起),子线程再执行完后,主线程才结束。否则主线程会直接结束导致子线程不会执行。

    import time
    import threading
    
    
    def testRun():
        print('-----start-----')     # 1. 执行
        time.sleep(2)    # 2. 阻塞(挂起,执行下一个线程:1和2步循环,直到所有线程都执行完 1,然后接着往下执行3)
        print(f"当前线程名字:{threading.current_thread().name}")  # 3  (3和4循环,直到所有线程都执行完3,然后接着往下执行5...)
        time.sleep(2)  # 4
        print('qeada')  # 5
    
    
    thread_list = []
    start = time.time()
    for i in range(5):
        t = threading.Thread(target=testRun)
        thread_list.append(t)
    for t in thread_list:
        t.setDaemon(True)
        t.start()
    for t in thread_list:  # 不使用join,会导致所有子线程遇到阻塞后,主线程并不会等待子线程阻塞结束而直接结束。
        t.join()  
    print("it's over.")
    print(f"总耗时:{time.time()-start}")
    
    >>>
    -----start-----
    -----start-----
    -----start-----
    -----start-----
    -----start-----
    当前线程名字:Thread-1
    当前线程名字:Thread-2
    当前线程名字:Thread-4
    当前线程名字:Thread-3
    当前线程名字:Thread-5
    qeada
    qeada
    qeada
    qeada
    qeada
    it's over.
    总耗时:4.006011962890625
  • 相关阅读:
    Kafka2.0服务端写入和读取流程
    Kafka2.0服务端启动源码
    Kafka2.0消费者协调器源码
    Kafka2.0消费者客户端源码分析
    [六省联考2017]分手是祝愿 题解(期望dp)
    [信息学奥赛一本通oj1741]电子速度 题解
    [CSP-S模拟测试53]题解
    [CSP-S模拟测试52]题解
    [CSP-S模拟测试ex]题解
    [CSP-S模拟测试51]题解
  • 原文地址:https://www.cnblogs.com/tangpg/p/9590501.html
Copyright © 2020-2023  润新知