Python中实现线程等待的主要方法包括join()
、time.sleep()
、信号机制等,具体使用场景和实现方式如下:
一、使用join()
方法
-
基本用法 :主线程调用子线程的
join()
方法,阻塞主线程直到子线程执行完毕。这是最常用的线程同步方式。 -
带超时参数 :
join(timeout)
方法允许设置超时时间,超时后抛出TimeoutError
异常。
二、使用time.sleep()
函数
- 延时执行 :通过
time.sleep(seconds)
暂停当前线程指定秒数,适用于非阻塞的延时操作。
三、信号机制(signal
模块)
- 信号处理 :通过
signal
模块发送信号(如SIGINT
),实现线程间的同步或终止控制,适用于需要响应外部中断的场景。
四、其他高级方法
-
threading.Event
:用于线程间通信,通过wait()
方法实现条件等待。 -
threading.Timer
:创建定时器线程,在指定时间后执行任务。
示例代码
以下是使用join()
和time.sleep()
的典型示例:
使用join()
等待线程完成
import threading
def print_numbers(n):
for i in range(n):
print(f"Thread 1: {i}")
t = threading.Thread(target=print_numbers, args=(5,))
t.start()
t.join() # 主线程等待子线程完成
print("子线程执行完毕")
使用time.sleep()
延时执行
import time
print("开始执行")
time.sleep(5) # 暂停5秒
print("等待5秒后继续执行")