欢迎访问宙启技术站
智能推送

Python中的start()方法与join()方法的配合使用

发布时间:2023-12-29 05:38:13

在Python中,start()方法用于启动一个新的线程,而join()方法用于等待该线程运行结束。

start()方法的作用是开启一个线程,并执行线程的run()方法。通过调用start()方法,可以让线程在后台运行,不会阻塞主线程的执行。

join()方法的作用是等待线程执行完毕。当调用join()方法时,主线程会暂停执行,直到被调用的线程运行结束后才会继续执行。

下面是一个使用start()方法和join()方法的示例:

import threading
import time

def my_func():
    print("Thread started")
    time.sleep(3)  # 模拟耗时操作
    print("Thread finished")

# 创建线程
thread = threading.Thread(target=my_func)

# 启动线程
thread.start()

# 主线程等待子线程执行完毕
thread.join()

print("Main thread finished")

在上面的示例中,我们定义了一个函数my_func(),用于打印一条消息并模拟一个耗时操作。然后,我们创建了一个线程thread,并将my_func()函数指定为线程的目标函数。接着,我们调用thread.start()方法启动线程。

在主线程中,我们调用thread.join()方法,这会导致主线程暂停执行,直到thread线程执行结束。最后,我们打印一条消息,表示主线程执行完毕。

运行以上代码,输出如下:

Thread started
Thread finished
Main thread finished

从输出结果可以看出,线程的start()方法启动后,可以在后台运行,而不需要等待该线程执行完毕。主线程在调用join()方法后,会暂停执行,直到被调用的线程执行完毕。

需要注意的是,join()方法必须在start()方法之后调用。如果在调用join()方法之前调用start()方法,会抛出RuntimeError异常。

另外,join()方法还可以传入一个可选的超时参数,用于指定等待线程执行的最长时间。如果超过指定的时间,join()方法会返回,主线程会继续执行。例如,可以将thread.join(2)改为thread.join(1),这会导致主线程等待1秒后继续执行。