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

使用SetEvent()函数实现Python多线程间的同步和通信

发布时间:2023-12-27 19:14:22

在 Python 中,可以使用 threading.Event 类来实现多线程间的同步和通信。 Event 对象是线程之间的简单的同步机制,它允许线程之间通过设置和清除事件的状态来进行通信。 Event 有两种状态,即 setclear。当 Event 处于 set 状态时,等待的线程将会继续执行;而当 Event 处于 clear 状态时,等待的线程将会被阻塞。

接下来,我们将通过一个例子来演示如何使用 Event 实现多线程间的同步和通信。

import threading

# 创建一个 Event 对象,初始状态为 clear
event = threading.Event()

# 定义一个线程函数
def worker():
    print("Worker thread is waiting...")
    event.wait()  # 等待事件被设置为 set
    print("Worker thread received event and can continue.")

# 启动线程
thread = threading.Thread(target=worker)
thread.start()

# 主线程稍微延迟一段时间,以确保等待线程先运行
threading.Event().wait(1)

# 设置事件为 set 状态,从而释放等待的线程
event.set()

# 等待线程结束
thread.join()

在上述代码中,我们先创建了一个 Event 对象,并将其初始状态设置为 clear。然后定义了一个 worker 函数作为线程的入口点,在该函数中,线程会等待 event 对象被设置为 set 状态,一旦 event 对象被设置为 set,线程将继续执行。接下来,我们创建了一个新的线程并启动它。在主线程中,我们稍微延迟了一段时间来确保等待线程先开始运行。然后,我们设置了 event 对象为 set 状态,从而释放等待的线程。最后,我们等待线程结束。

这样,我们就成功地使用 Event 实现了多线程间的同步和通信。在实际应用中,我们可以根据需要在多个线程中使用 Event 对象来进行同步和通信。