python--事件event简单用法

在并发编程中,涉及到了时间event的使用,首先要先了解到event上线程threading模块中的一个类。具体的用法有:
event.set() # 设置标志位
event.wait() #等待设置标志位
event.clear() # 清除标志位

废话不说,看栗子

from threading import Event, 
Thread
import time
import random

event = Event()

def Light():
    print('红灯亮了')
    time.sleep(random.randint(1, 2))
    event.set()  # 设置标志位
    print('绿灯亮了')


# def car(i):
#     print('%s 正在等红灯' % i)
#     event.wait()  #等待设置标志位
#     print('%s加油起步' % i)
def car(i):
    print('%s 正在等红灯' % i)
    event.clear()  # 清除标志位
    print('%s加油起步' % i)

t1 = Thread(target=Light)
t1.start()

for i in range(3):
    t = Thread(target=car, args=(i,))
    t.start()

'''
事件Event.wait()运行结果
红灯亮了
0 正在等红灯
1 正在等红灯
2 正在等红灯

绿灯亮了
2加油起步
0加油起步
1加油起步

'''
#事件Event.clear()的运行结果
'''

红灯亮了
0 正在等红灯
0加油起步
1 正在等红灯
1加油起步
2 正在等红灯
2加油起步


绿灯亮了
'''

你可能感兴趣的:(线程进程)