zoukankan      html  css  js  c++  java
  • 同步对象(Event)

    # 同步对象(Event)
    import threading, time
    
    
    class Boss(threading.Thread):
        def run(self):
            print('Boss:今晚大家都要加班到22:00')
            print(event.isSet())  # False 没有设定标志位
            event.set()  # 设置了标志位,其它event.wait就可以跳过了
            time.sleep(5)
            print('Boss:<22:00>可以下班了')
            print(event.isSet())  # False 这里被工人的线程清空了标志位
            event.set()  # 又设置了标志位,意味告诉工人可以下班了
    
    
    class Worker(threading.Thread):
        def run(self):
            event.wait()  # 等着,当老板event.set了,才可往下执行
            print('Worker:命好苦')
            time.sleep(1)
            event.clear()  # 清除标志位
            event.wait()  # 再等老板event.set
            print('Worker:Ohyeah')
    
    
    if __name__ == '__main__':
        event = threading.Event()  # 创建一个同步对象event,所有线程对象共享一个event
    
        threads = []  # 创建一个线程空列表
        for i in range(5):  # 产生5个Worker类的线程并加入到threads列表中
            threads.append(Worker())
        threads.append(Boss())  # 产生一个Boss类的线程加入到threads列表中
        for t in threads:  # 运行threads列表中的线程,谁先运行是由cpu确定的,因此在Boss类中使用了event.set(),Worker类中只有event.wait()
            t.start()
        for t in threads:  # hreads列表中的线程.join()
            t.join()
    
        print('end...')
  • 相关阅读:
    TypeScript-基础-09-声明文件
    TypeScript-基础-08-类型断言
    TypeScript-基础-07-函数的类型
    TypeScript-基础-06-数组的类型
    TypeScript-基础-05-对象的类型—接口
    TypeScript-基础-04-联合类型
    TypeScript-工程
    小白学前端03
    小白学前端02
    小白学前端
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9498499.html
Copyright © 2011-2022 走看看