标签:clear tar set 模拟 and pre imp mil multi
from multiprocessing import Event
e = Event() # 事件创建之初,是阻塞状态
print(e.is_set()) # 查看事件的状态
# e.wait() # 根据事件的状态,选择阻塞 不 阻塞
print(‘1111‘)
e.set() # 修改事件的状态
print(e.is_set())
print(‘2222‘)
e.clear() # 清除修改的状态,改为FALSE
利用Event事件模拟的红绿灯事件
import time,random
from multiprocessing import Event,Process
def cars(e,i):
if not e.is_set():
print(‘car %i 在等待‘%i)
e.wait()
print(‘\033[0;32;40mcar %i 通过了\033[0m‘%i)
def light(e):
while True:
if e.is_set():
e.clear()
print(‘\033[31m红灯亮了\033[0m‘)
else:
e.set()
print(‘\033[32m绿灯亮了\033[0m‘)
time.sleep(2)
if __name__ == ‘__main__‘:
e = Event()
e.is_set()
p = Process(target=light,args=(e,))
p.start()
for i in range(20):
car = Process(target=cars, args=(e,i))
car.start()
time.sleep(random.random())
结果:
绿灯亮了
car 0 通过了
car 1 通过了
car 2 通过了
红灯亮了
car 3 在等待
car 4 在等待
car 5 在等待
car 6 在等待
car 7 在等待
标签:clear tar set 模拟 and pre imp mil multi
原文地址:https://www.cnblogs.com/bozhengheng/p/10296734.html