码迷,mamicode.com
首页 > 其他好文 > 详细

事件Event

时间:2019-01-21 00:03:18      阅读:137      评论:0      收藏:0      [点我收藏+]

标签: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 在等待

事件Event

标签:clear   tar   set   模拟   and   pre   imp   mil   multi   

原文地址:https://www.cnblogs.com/bozhengheng/p/10296734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!