事件(Event)
事件Event主要用于唤醒正在阻塞等待状态的线程;
Event 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。在初始情况下,event 对象中的信号标志被设置假。如果有线程等待一个 event 对象,而这个 event 对象的标志为假,那么这个线程将会被一直阻塞直至该标志为真。一个线程如果将一个 event 对象的信号标志设置为真,它将唤醒所有等待个 event 对象的线程。如果一个线程等待一个已经被设置为真的 event 对象,那么它将忽略这个事件,继续执行。
Event() 可以创建一个事件管理标志,该标志(event)默认为False,event对象主要有四种方法可以调用:
#coding=utf-8import threading
import timedef xuexi(name):# 等待事件进入等待阻塞状态print(f'{name}已经启动')print(f'{name}已经进入学习状态!')time.sleep(1)event.wait()#收到事件后进入运行状态print(f'{name}收到通知了。')print(f'{name}正在学习python')if __name__ == '__main__':event = threading.Event()#创建新的线程thread1 = threading.Thread(target=xuexi, args=("Alone", ))thread2 = threading.Thread(target=xuexi, args=("Ruby", ))#开启线程thread1.start()thread2.start()time.sleep(10)# 发送事件通知print('--------->>>>>主线程通知小伙伴开始学习!')event.set()