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();

猜你喜欢

转载自blog.csdn.net/weixin_44887276/article/details/114867376