zoukankan      html  css  js  c++  java
  • python 进程事件

    1、作用

    通过信号量,控制全部进程进入阻塞状态,也可以通过控制信号量,解除全部进程的阻塞

    注意:定义的事件对象,默认状态是阻塞

    2、常用方法

    """
    对象.set()
        作用:设置一个事件的状态为True
    对象.clear()
        作用:设置一个事件的状态为False
    对象.is_set()
        作用:查看当前事件的状态
    对象.wait()
        根据事件的状态,判断是否阻塞
            若状态为True,则不阻塞
            若状态为False,则阻塞
        注意:阻塞的是 对象.wait()后面的内容
    """
    """
    红绿灯亮为永真
    """
    import time
    from multiprocessing import Process
    from multiprocessing import Event
    
    
    def car(e, car):
        if not e.is_set():
            print('%s阻塞' % car)
            e.wait()
        print('%s通过' % car)
    
    
    def traffic_light(e):
        while 1:
            if e.is_set():
                e.clear()
                print('红灯亮')
            else:
                e.set()
                print('绿灯亮')
            time.sleep(2)
    
    
    if __name__ == '__main__':
        e = Event()
        p = Process(target=traffic_light, args=(e, ))
        p.start()
        for i in range(30):
            p1 = Process(target=car, args=(e, 'car%s' % i ))
            p1.start()
            time.sleep(1)
  • 相关阅读:
    idea 相关
    dns 相关
    bash 相关
    建造者模式(Builder)
    C#中out 及 ref 区别
    C# 2.0新特性
    Asp.net.Ajax控件学习
    装饰模式(Decorator Pattern)
    职责链模式(Chain of Responsibility Pattern)
    面向对象
  • 原文地址:https://www.cnblogs.com/wt7018/p/11055498.html
Copyright © 2011-2022 走看看