zoukankan      html  css  js  c++  java
  • 事件

    #模块:Event
    #导入方法:from multiprocessing import Process,Event
    #模块方法:
        e=Event()
        e.is_set()        #当is_set()的值为True时,e.wait()是非阻塞状态
                        #当is_set()的值为False时,e.wait()是阻塞状态
        e.wait()        #根据is_set的bool值决定阻塞或非阻塞状态
        e.set()            #将is_set()设为True
        e.clear()        #将is_set()设为False
    #使用方法:交通信号灯原理
    
    
    ##########交通信号灯模拟
    from multiprocessing import Process,Event
    import time
    
    def Trafficlight(e):
        while 1:
            if e.is_set():      #当此条件为True时,表示绿灯,车辆可以通过
                time.sleep(5)   #表示绿灯的时间为5秒
                print("33[31m红灯亮了33[0m")    #5秒后红灯亮
                e.clear()       #clear将is_set设为False
            else:
                time.sleep(5)   #红灯的时间为5秒
                print("33[32m 绿灯亮了33[0m")   #5秒后绿灯亮
                e.set()         #set将is_set设为True
    
    def Car(i,e):
        e.wait()    #当wait为False时,此时会阻塞,当wait为True时,此时程序正常运行,所以受到信号灯is_set()影响
        print("第{}辆车通过了".format(i))
    
    
    if __name__ == '__main__':
        e=Event()
        #信号灯进程
        light=Process(target=Trafficlight,args=(e,))
        light.start()
        #50辆车
        for i in range(50):
            car=Process(target=Car,args=(i,e))
            car.start()
  • 相关阅读:
    移动开发 Native APP、Hybrid APP和Web APP介绍
    urllib与urllib2的学习总结(python2.7.X)
    fiddler及postman讲解
    接口测试基础
    UiAutomator2.0 和1.x 的区别
    adb shell am instrument 命令详解
    GT问题记录
    HDU 2492 Ping pong (树状数组)
    CF 567C Geometric Progression
    CF 545E Paths and Trees
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/11719089.html
Copyright © 2011-2022 走看看