码迷,mamicode.com
首页 > 其他好文 > 详细

同步对象(Event)

时间:2018-08-18 20:37:09      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:col   其它   work   产生   threading   __name__   event   imp   join   

# 同步对象(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...)

 

同步对象(Event)

标签:col   其它   work   产生   threading   __name__   event   imp   join   

原文地址:https://www.cnblogs.com/dangrui0725/p/9498499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!