zoukankan      html  css  js  c++  java
  • Python--day38--事件

    1,事件的方法:

    #set和clear
    #分别用来修改一个事件的状态 True或者False
    #is_set用来查看一个事件的状态
    #wait 是依据事件的状态来决定自己是否阻塞
    # False最 True不阻塞

    2,事件的创建和事件的方法示例:

     1 #通过一个信号 来控制 多个进程 同时 执行或者阻塞
     2 #事件
     3 from multiprocessing import  Event
     4 #一个信号可以使所有的进程都进入阻塞状态
     5 #也可以控制所有的进程解除阻塞
     6 #一个事件被创建之后,默认是阻塞状态
     7 e = Event() #创建了一个事件
     8 print(e.is_set())  #查看一个事件的状态,默认被设置成阻塞
     9 e.set()             #将这个事情的状态改为True
    10 print(e.is_set())
    11 e.wait()    #是依据e.is_set()的值来决定是阻塞的
    12 print(123456)
    13 e.clear()    #将这个事件的状态改为False
    14 print(e.is_set())
    15 e.wait()
    16 print('*'*10)

     3,红绿灯事件模型例子

     1 import time
     2 import random
     3 
     4 from multiprocessing import Event,Process
     5 def cars(e,i):
     6     if not e.is_set():
     7         print('car%i在等待' % i)
     8         e.wait()    #阻塞 直到得到一个 事件状态变成True 的信号
     9     print('33[0;32;40mcar%i通过33[0m'%i)
    10 
    11 
    12 def light(e):
    13     while True:
    14         if e.is_set():
    15             e.clear()
    16             print('33[31m红灯亮了33[0m')
    17 
    18         else:
    19             e.set()
    20             print('33[32m绿灯亮了33[0m')
    21         time.sleep(2)
    22 
    23 if __name__ == '__main__':
    24     e = Event()
    25     traffic = Process(target=light,args=(e,))
    26     traffic.start()
    27     for i in range(20):
    28         car = Process(target=cars, args=(e,i))
    29         car.start()
    30         time.sleep(random.random())
  • 相关阅读:
    JQ实现选项卡(jQuery原型插件扩展)
    jQuery的实现原理和核心
    fetch 关于七牛的content-type 的问题
    npm 安装远程包(github的)
    关于dvajs里effects的call和put
    babel6 的 export default bug
    regeneratorRuntime未定义
    babel 解构赋值无法问题
    npm 安装本地包
    datable-默认参数列表
  • 原文地址:https://www.cnblogs.com/xudj/p/10322936.html
Copyright © 2011-2022 走看看