python多线程事件(线程间的通信)

#事件,就是多线程之间的通信

import threading, time

class Boss(threading.Thread):

 

  def run(self):

    print("Boss说:从现在开始我们就要996啦,欢呼吧")

    #事件设置

    print(event.isSet())

    event.set()   #event被set后,多线程中处在event.wait()后的程序才会被激活执行

    time.sleep(3)

扫描二维码关注公众号,回复: 8365244 查看本文章

    print("Boss:大家干完了,就不用996了")

    print(event.isSet())

    event.set()

class Worker(threading.Thread):

  def run(self):

    event.wait()

    print("Worker:哎呀妈呀,咋还996了呢")

    event.clear()

    event.wait()

    print("Worker:oh yeah......")

if __name__ == "__main__":

  event = threading.Event()

  threads = []

  for i in range(5):

    threads.append(Worker())

  threads.append(Boss())

  for t in threads:

    t.start()

#运行上面的程序,可以得到下面的输出

Boss说:从现在开始我们就要996啦,欢呼吧

Worker:哎呀妈呀,咋还996了呢

Worker:哎呀妈呀,咋还996了呢

Worker:哎呀妈呀,咋还996了呢

Worker:哎呀妈呀,咋还996了呢

Worker:哎呀妈呀,咋还996了呢

Boss:大家干完了,就不用996了

Worker:oh yeah......

Worker:oh yeah......

Worker:oh yeah......

Worker:oh yeah......

Worker:oh yeah......

Boss线程首先说话,并通过set对event设置状态,激活处于event.wait后的程序

5个Work线程首先处于wait状态,只有等到event状态被设置后,才会运行后面的程序,运行完后复位event的状态,并再次进入wait状态。

    

  

猜你喜欢

转载自www.cnblogs.com/laofang/p/12120295.html
今日推荐