用外行的视角,重新理解程序编写。
threading.Event(水闸)
就是一个线程水闸,如果一根水管(线程)没有水闸,一旦这管开启以后,就没法控制里面水的位置了。为控制水在水管的位置。这时只要在需要管控的地方加个水闸就OK了。外部只要开闸,就会通过。否则就会阻塞。
现在我们来看看具体的应用。
定义一个水闸:flag_event = threading.Event()
创建一根水管,把水闸加载进去:t1 = threading.Thread(target=test, args=(flag_event,), name='flag')
查看水闸状态:flag_event.is_set()
返回Ture或False
在水闸内增加水闸:flag_event
.wait()
开闸:flag_event.set()
关闸:flag_event.clear()
def test(event):
if not event.is_set() :
print ("水闸未打开,等待打开" )
event.wait()
print ("GOOD,开闸放水" )
else:
print("水闸是开关,我要关掉" )
event.clear()
flag_event_event = threading.Event()
t1 = threading.Thread(target=test, args=(flag_event_event,), name='test')
t1.start()
time.sleep(1)
flag_event_event.set()
time.sleep(1)
flag_event_event.clear()