事件Event 线程的一个关键特性是每个线程都是独立运行且状态不可预测。如果程序中的其 他线程需要通过判断某个线程的状 态来确定自己下一步的操作,这时线程同步问题就会变得非常棘手。为了解决这些问题,我们需要使用threading库中 的Event对象。 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。在 初始情况下,Event对象 中的信号标志被设置为假。如果有线程等待一个Event对象, 而这个Event对象的标志为假,那么这个线程将会被一直 阻塞直至该标志为真。一个线程如果将一个Event对象的信号标志设置为真,它将唤醒所有等待这个Event对象的线 程。如果一个线程等待一个已经被设置为真的Event对象,那么它将忽略这个事件, 继续执行
Event()可以创建一个事件管理标志,该标志(event)默认为False,event 对象主要有四种方法可以调用:
1.event.wait(timeout=None):调用该方法的线程会被阻塞,如果设置了timeout 参数,超时后,线程会停止阻塞继 续执行;
2.event.set():将event 的标志设置为True,调用wait 方法的所有线程将被唤醒;
3.event.clear():将event 的标志设置为False,调用wait 方法的所有线程将被阻塞;
4.event.is_set():判断event 的标志是否为True。
#线程1,门,一开始是打开的 每3秒需要自动关闭一次 如果有人通过需要重新刷卡打开 #线程2,人,人通过门,如果门是打开的则直接通过,如果没有打开需要刷卡 之后门就打开了 之后通知人继续进入 import threading import time import random #随