首页
登录 | 注册

Python events

  • Events不同线程之间同步对象

参数说明:

# 实例化event对象
event = threading.Event()

# 等待检测标志位被设定,标志位设置后就不阻塞了
# 客户机线程可以等待设置标志
event.wait()

# 设置一个全局变量标志位True
event.set()

# 清空全局变量False
event.clear()

 

events模板:

  通过Event来实现两个或多个线程间的交互,下面是一个红绿灯的例子,即起动一个线程做交通指挥灯,生成几个线程做车辆,车辆行驶按红灯停,绿灯行的规则。
  标志位被设定,代表绿灯,直接同行,标志位清空,代表红灯,wait等待变绿等。每一量车都可以等待同一个事件。
  6秒绿灯变红灯,4秒红灯变绿等,事件的连锁变化。
import time,threading

# 生成event实例对象
event = threading.Event()

# 设置红绿灯函数
def lighter():

    # 设置变量0
    count = 0

    # 设置event为True 启动绿灯
    event.set()
    while True:
        # 如果在5以上10一下就成立
        if count >5 and count < 10:
            # 清空event为False,显示红灯
            event.clear()
            print("\033[41;1mThe red light..\033[0m")
        # 如果10以上就成立
        elif count >10:
            # 设置为True 变绿灯
            event.set()
            # 还原为0
            count = 0
        else:
            print("\033[42;1mThe green light..\033[0m")

        # 每次1秒就+1
        time.sleep(1)
        count +=1

# 模拟车量函数
def car(name):
    while True:
        # 测试是否设置了标识位,射了为True,未射False
        if event.is_set():
            print("[%s] running..."%name)
            time.sleep(1)
        else:
            # 为False的时候就是红灯
            print("[%s] sees red light , waiting..."%name)
            # 等待检测标识位,表示位后往下执行
            event.wait()
            print("\033[34;1m[%s] green light is on,start going...\033[0m"%name)

# 生成实例话执行红绿灯线程
light = threading.Thread(target=lighter)
light.start()

# 生成实例话执行车线程
car1 = threading.Thread(target=car,args=("Tesla",))
car1.start()

相关文章

  • 定义函数时,默认参数必须指向不变的对象 参数为可变对象时,正常调用的时候,结果没有问题,但是当使用默认参数的时候,结果就会和理想的有差距. In [78]: def add(L=[]): ...: L.append('END') ...: ...
  • 如何零基础开始自学Python编程
    转载——原作者:赛门喵 链接:https://www.zhihu.com/question/29138020/answer/141170242 0. 明确目标 我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个 ...
  • Python是什么? Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CPython遵循 G ...
  • 计算机基础 01 计算机基础之编程 02 计算机组成原理 03 计算机操作系统 04 编程语言分类 Python解释器 05 Python和Python解释器 06 执行Python程序的两种方式 07 Python集成开发环境 变量 08 ...
  • python接口自动化(二十一)--unittest简介(详解)
    简介 前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest.熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG,这个招聘的需求上也是经常见到 ...
  • python接口自动化(二十三)--unittest断言——上(详解)
    简介 在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert).用 unittest 组件测试用例的时候,断言的方法还是很多的,下面介绍几种常 ...

2019 cecdns.com webmaster#cecdns.com
12 q. 0.071 s.
京ICP备10005923号