python线程join函数的作用与使用方法

  • Post category:Python

Python的线程提供join()方法,可以让一个线程等待另一个线程执行完毕后再继续执行。

join()方法的使用说明

join()方法的功能是将所属线程的执行流程加入到调用它的线程中,等到调用它的线程的所有代码执行完毕,才会执行加入的线程。

join()方法有一个-timeout参数,表示等待时长,单位是秒。如果等待超时,join()方法就会返回。

join()方法的作用是让线程同步,等待其所依赖的线程执行完毕以后再执行。

实例说明

下面给出两个关于join()方法的使用实例:

示例1

在这个例子中,创建了两个线程A和B,线程A先执行,然后调用join()方法让线程B等待线程A执行完毕后才执行,输出的结果是先输出A线程的结果,再输出B线程的结果。

import threading
import time

def func1():
    print("线程A开始执行...")
    time.sleep(2)
    print("线程A执行完毕...")

def func2():
    print("线程B开始执行...")
    time.sleep(2)
    print("线程B执行完毕...")

if __name__=='__main__':
    t1 = threading.Thread(target=func1)
    t2 = threading.Thread(target=func2)
    t1.start()  # 开始执行t1线程
    t1.join()   # 等待t1线程执行完毕
    t2.start()  # 开始执行t2线程

示例2

在这个例子中,创建了1个主线程和2个子线程,每个子线程都睡眠一定时间(t1线程休眠3秒,t2线程休眠1秒),当t1线程休眠完成之后,执行t2.join()方法,等待t2线程休眠完成后再继续执行主线程。输出的结果是t1线程休眠3秒,然后t2线程再休眠1秒,最后主线程执行输出完成。

import threading
import time

def t1():
    print("t1线程开始执行...")
    time.sleep(3)
    print("t1线程执行完毕...")

def t2():
    print("t2线程开始执行...")
    time.sleep(1)
    print("t2线程执行完毕...")

if __name__=='__main__':
    ta = threading.Thread(target=t1)
    tb = threading.Thread(target=t2)
    ta.start()   # 启动ta线程
    ta.join()    # 等待ta线程执行完成
    tb.start()   # 启动tb线程
    tb.join()    # 等待tb线程执行完成
    print("主线程执行完毕...")

以上就是关于python线程join()方法的作用与使用方法的完整攻略。