线程状态方法

  

主要用于生产者,消费者模型

  

消费者消费速度大于生产者生产速度例子

  
 <代码>类调度程序:
  def __init__(自我):
  自我。data=https://www.yisu.com/zixun/None
  自我。事件=threading.Event ()
  
  def生产(自我,总):
  在范围(总):_
  data=random.randint (0100)
  logging.info(数据)
  自我。=数据
  self.event.wait (1)
  self.event.set ()
  
  def消费(自我):
  虽然不是self.event.is_set ():
  data=self.data
  logging.info(“收到{}”.format(数据)
  自我。data=https://www.yisu.com/zixun/None
  self.event.wait (0.5)
  
  d=调度程序()
  p=threading.Thread(目标=d。生产,arg游戏=(10),name=爸破恕?
  c=threading.Thread(目标=d。消费,name=跋颜摺?
  c.start ()
  p.start ()
  #消费者主动去消费,需要主动去查看下生产者有没有生产数据 
  

使用条件改换成通知机制

  

生产者生产出数据,通知消费者来消费

  
 <代码>类调度程序:
  def __init__(自我):
  自我。data=https://www.yisu.com/zixun/None
  自我。事件=threading.Event ()
  自我。气孔导度=threading.Condition ()
  
  def生产(自我,总):
  在范围(总):_
  data=random.randint (0100)
  self.cond:
  logging.info(数据)
  自我。=数据
  self.cond.notify (2)
  # self.cond.notify_all ()
  self.event.wait (1)
  self.event.set ()
  
  def消费(自我):
  虽然不是self.event.is_set ():
  self.cond:
  self.cond.wait ()
  data=self.data
  logging.info(“收到{}”.format(数据)
  自我。data=https://www.yisu.com/zixun/None
  self.event.wait (0.5)
  
  d=调度程序()
  p=threading.Thread(目标=d。生产,arg游戏=(10),name=爸破恕?
  # c=threading.Thread(目标=d。消费,name=跋颜摺?
  # c.start ()
  因为我在范围(5):
  c=threading.Thread(目标=d。消费,name=跋颜? {}”.format(我))
  c.start ()
  p.start()  

线程状态方法