python进程同步-Event

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();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值