线程Event

Event是一个简单的同步的对象。

event = threading.Event()  生成event对象

event.set()  设置标志位

event.clear()  清空标志位

event.wait()   等待标志位被设定(阻塞)

event.is_set()  标志位是否被设定

红绿灯模型,假如设置了标志位代表绿灯,清空标志位代表红灯

 

#coding=utf-8

import threading
import time

event = threading.Event()

def lighter():
    n = 1
    while True:
        if n > 10 and n <= 20:
            event.set()
            print u'绿灯亮了{}秒'.format(n - 10)
        elif n > 20:
            event.clear()
            n = 0
        else:
            print u'红灯亮了{}秒'.format(n)
        n += 1
        time.sleep(1)

def car():
    while True:
        if event.is_set():
            print u'行驶中...'
        else:
            print u'红灯亮,车停了'
            event.wait()
            print u'绿灯亮,车继续跑'
        time.sleep(1)


tl = threading.Thread(target=lighter)
tl.start()

tc = threading.Thread(target=car)
tc.start()

 

红灯亮了1秒
红灯亮,车停了
红灯亮了2秒
红灯亮了3秒
红灯亮了4秒
红灯亮了5秒
红灯亮了6秒
红灯亮了7秒
红灯亮了8秒
红灯亮了9秒
红灯亮了10秒
绿灯亮了1秒绿灯亮,车继续跑

行驶中...绿灯亮了2秒

行驶中...绿灯亮了3秒

行驶中...绿灯亮了4秒

绿灯亮了5秒行驶中...

行驶中...绿灯亮了6秒

行驶中...绿灯亮了7秒

行驶中...绿灯亮了8秒

行驶中...绿灯亮了9秒

行驶中...绿灯亮了10秒

行驶中...
红灯亮了1秒

 

转载于:https://www.cnblogs.com/allenzhang-920/p/10201110.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值