• 线程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秒

  • 相关阅读:
    在WinDBG中查看变量的命令
    在WinDBG中查看调用栈的命令
    伪寄存器
    STORED PROCEDURES: GOOD OR BAD(存储过程:好还是坏)
    第十二章 PL/SQL应用程序性能调优
    第十章 PL/SQL对象类型
    第五章 PL/SQL集合与记录
    第二章 PL/SQL基础
    第一章 PL/SQL一览
    第三章 PL/SQL数据类型
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/10201110.html
Copyright © 2020-2023  润新知