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

使用Python的SetEvent()函数实现事件的等待和通知

发布时间:2023-12-27 19:07:47

在Python中,可以使用threading模块的Event类来实现事件的等待和通知。Event对象可用于线程同步,它包含一个内部标志,线程可以等待该标志,或者设置该标志来通知其他线程。

Event类有两个主要的方法:

- wait():等待事件的标志变为 true。

- set():将事件的标志设为 true,并通知所有等待的线程。

下面是一个使用Event类的例子:

import threading

# 定义一个Event对象
event = threading.Event()

# 创建一个等待事件的线程
def wait_for_event():
    print("Thread 1: Waiting for event...")
    event.wait()  # 等待事件的标志变为 true
    print("Thread 1: Event occurred!")

# 创建一个通知事件的线程
def set_event():
    print("Thread 2: Event will be set after 3 seconds.")
    # 延时3秒后设置事件的标志为 true,并通知所有等待的线程
    threading.Timer(3, event.set).start()

# 启动线程
thread1 = threading.Thread(target=wait_for_event)
thread2 = threading.Thread(target=set_event)
thread1.start()
thread2.start()

在上面的例子中,我们定义了一个Event对象,并创建了两个线程wait_for_eventset_eventwait_for_event线程在调用event.wait()时会一直等待,直到event对象的标志变为trueset_event线程等待3秒后调用event.set()方法,将event对象的标志设置为true

运行以上代码,输出结果将类似于:

Thread 1: Waiting for event...
Thread 2: Event will be set after 3 seconds.
Thread 1: Event occurred!

在实际应用中,可以根据需要结合Event类和多线程编程,实现更复杂的线程同步。