Event实际上描述的是一种同步的处理时间,可以简单的理解为,不同的进程之间可以利用一些特殊的处理来等待其他进程处理完毕;
个人感觉这个就是相当于提供了一种阻塞的方式,比如你开了两个进程同时操作,但是你其中一个进程依赖于另一个进程处理完成之后再进行操作,那么这个时候使用Event;
代码示例如下,但是需要频繁得阻塞和解除阻塞,看起来很是麻烦;
import multiprocessing, time
def restaurant_handle(event):
print("1.【餐厅】为食客安排座位,并在一旁等待食客点餐...");
# 餐厅在等食客点餐,模拟实际点餐操作的逻辑耗时
time.sleep(1);
# 解除阻塞状态
event.set();
# 清楚已有的状态
event.clear();
# 等待食客后续处理
event.wait();
# 当进行了第二部的时候执行第三部,进行做饭
print("3.【餐厅】厨师开始做饭啦...");
# 饭做好了,解除食客等待
event.set();
# 清楚已有的状态
event.clear();
pass;
def diners_handle(event):
# 等待上面餐厅第一步完成之后才可以执行
event.wait();
print("2.【食客】看完菜单,选好了吃的...");
# 食客下单之后这里餐厅需要进行做饭,模拟实际做饭的耗时
time.sleep(1);
event.set();
# 清楚已有的状态
event.clear();
# 等饭做好可以吃;
event.wait();
print("4.【食客】开始吃饭了...");
pass;
def main():
event = multiprocessing.Event();
restaurant_process = multiprocessing.Process(target=restaurant_handle,args=(event,),name="餐厅服务进程");
diners_process = multiprocessing.Process(target=diners_handle,args=(event,),name="食客服务进程");
restaurant_process.start();
diners_process.start();
if __name__ == '__main__':
main();