Event 是 python 锁机制的一种,用于通知线程是堵塞等待还是进行下一步操作。Event有一个标志_flag,在创建时默认初始化为False。set()方法设置Event状态标志_flag为True。clear()方法复位为False。
主要应用方法为wait(timeout)。timeout的单位为秒。wait的timeout参数为空,如标志_flag为False,则堵塞等待。否则执行下一步。在标志为False时,如果timeout参数不为空,则堵塞时间到后返回状态值,执行下一步。如标志为True,则直接执行下一步。
应用场景:简单的猜密码。用户输入一个字符串,如字符串不正确,则等待三秒后提示用户继续输入。直到用户输入正确字符串为止。
代码示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from time import ctime, sleep
from threading import Thread, Event
def inputchar():
print('begin to input the correct chars\n')
while True:
if input() == 'abc':
event.set()
break
def showtip():
while not event.wait(3):
print('input chars:\n')
print('you input correct chars')
if __name__ == '__main__':
event = Event()
event.set()
event.clear()
t1 = Thread(target=inputchar)
t2 = Thread(target=showtip)
t1.start()
t2.start()
t1.join()
t2.join()
运行结果:
D:\Programs\Python\Python38-32\python.exe E:/PycharmProjects/cp/src/ch04/ex11_event.py
begin to input the correct chars
input chars:
input chars:
ainput chars:
aa
input chars:
aafaf
input chars:
abc
you input correct chars
Process finished with exit code 0