使用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_event和set_event。wait_for_event线程在调用event.wait()时会一直等待,直到event对象的标志变为true。set_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类和多线程编程,实现更复杂的线程同步。
