MST

星途 面试题库

面试题:Python多线程同步原语之中等难度:Event的应用场景

在Python多线程编程中,Event同步原语有哪些典型的应用场景?请举例说明如何使用Event来协调线程之间的操作。
24.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

Event同步原语典型应用场景

  1. 线程间信号通知:一个线程完成某个任务后,通知其他等待的线程继续执行。例如,数据加载线程完成数据加载后,通知处理线程开始处理数据。
  2. 控制线程启动时机:可以在主线程中设置某些条件,当条件满足时,通过Event通知工作线程启动。

使用Event协调线程操作示例

import threading
import time


def worker(event):
    print("Worker线程等待信号...")
    event.wait()
    print("Worker线程接收到信号,开始工作...")


if __name__ == "__main__":
    event = threading.Event()
    t = threading.Thread(target=worker, args=(event,))
    t.start()
    time.sleep(2)
    print("主线程准备好信号,发送给Worker线程")
    event.set()

在上述代码中,worker线程调用event.wait()等待信号。主线程睡眠2秒后,调用event.set()发送信号,worker线程接收到信号后继续执行后续代码。