• 多进程中的事件


    一个信号可以使所有的进程进入阻塞状态,也是解除所有阻塞。一个事件被创建后,默认阻塞状态

    from multiprocessing import Event,Process
    import time,random
    
    # e = Event()  #创建一个事件
    # print(e.is_set()) #查看事件的状态,默认阻塞
    # e.set()  #将事件的状态改为True
    # e.wait()         #是依据e.is_set()的值来决定是否在wait处阻塞的
    # e.clear()  #将事件的状态改为False
    def cars(e,i):
        if not e.is_set():
            print("{}在等红灯".format(i))
            e.wait()
        else:
            print("{}绿地直接通行".format(i))
    def light(e):
        while True:
            if e.is_set():
                print("33[32m 绿灯亮了33[0m")
                time.sleep(2)
                e.clear()
            else:
                print("33[31m 红灯亮了33[0m")
                time.sleep(2)
                e.set()
    if __name__ == '__main__':
        e = Event()
        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())
  • 相关阅读:
    MQTT初步使用
    越简单越喜欢
    大端小端
    Chapter 21_5.2 tab扩展
    Chapter 21_5.1 URL编码
    Chapter 21_5 替换
    插件api
    怎么找到一个好名字idea插件开发
    Struts2 maven项目简单案例
    javassist_1 cannot be cast to jaassist.util.proxy.Proxy
  • 原文地址:https://www.cnblogs.com/superniao/p/10121802.html
Copyright © 2020-2023  润新知