Python多进程编程 ---- 基础篇4. Event

----------基础篇

引子

python进程的事件用于主进程控制其他子进程的执行,Event类有如下几个主要方法:

  1. wait() 插入在进程中插入一个标记(flag)默认为 False,当 flag为False时,程序会停止运行进入阻塞状态;
  2. set() 使flag为True,程序会进入非阻塞状态;
  3. clear() 使flag为False,程序会停止运行,进入阻塞状态 ;
  4. is_set() 判断flag 是否为True,是的话返回True,不是则返回False

红绿灯
(车车现在不是很听话。。。。他们不按照顺序走)

from multiprocessing import Process,Event
import time,random

def car(e,n):
    while True:
        if not e.is_set(): #Flase
            print('红灯亮,car%s等着' %n)
            e.wait()
            print('车%s 看见绿灯亮了' %n)
            time.sleep(random.randint(3,6))
            if not e.is_set():
                continue
            print('car', n ,'走你')
            break

def traffic_lights(e,inverval):
    while True:
        time.sleep(inverval)
        if e.is_set():
            e.clear() #e.is_set() ---->False
            print("红灯亮")
        else:
            e.set()
            print("绿灯亮")

if __name__ == '__main__':
    e=Event()
    
    t=Process(target=traffic_lights,args=(e,10))
    t.start()
    
    for i in range(10):
        p=Process(target=car,args=(e,i,))
        p.start()
        


    print('============》')

========================

参考文章:
python之路——进程

Python3.x:多进程Pipes与Manager

python并发编程之多进程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值