码迷,mamicode.com
首页 > 编程语言 > 详细

python threading condition

时间:2014-11-06 17:47:36      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:produce   python   import   count   

 threading
 time

 Producer(threading.Thread):
     run(self):
         count
         True:
             con.acquire():
                 count > 1000:
                    con.wait()
                :
                    count = count+100
                    msg = self.name+ + str(count)
                     msg
                    con.notify()
                con.release()
                time.sleep(1)

 Consumer(threading.Thread):
     run(self):
         count
         True:
             con.acquire():
                 count < 100:
                    con.wait()
                :
                    count = count-3
                    msg = self.name++str(count)
                     msg
                    con.notify()
                con.release()
                time.sleep(1)

count = 500
con = threading.Condition()

 test():
     i  range(2):
        p = Producer()
        p.start()
     i  range(5):
        c = Consumer()
        c.start()
  == :
    test()

个人理解:

代码生成了2个线程为生产者,5个线程为消费者

首先说明生产者和消费者是互不干扰的

首先说生产者是怎么生产的

首先第一个线程执行后比如说count就是600,这样释放锁,下一个线程开始跑累计+=100,每次生产完成通知消费者,当生产者发现count为1000时wait也就是等待

再说消费者一直再消费,当生产者生产为600时,消费者消费完事597,当count也就是产品为1000时,由于生产者wait,消费者消费了3个也就是997,这时消费者消费了3个后notify也就是通知生产者


说说这么做的好处

假如我生产者因为某种因素不生产了,这时消费者是不知道的,这时就需要生产者每生产一次就告诉消费者,同理生产者也要知道消费者是否在消费

而且如果生产者的生产的速率大大的大与消费的速度,这时wait可以通过伐值的判断来限制队列最大的长度


本文出自 “expect批量同步数据” 博客,请务必保留此出处http://4249964.blog.51cto.com/4239964/1573434

python threading condition

标签:produce   python   import   count   

原文地址:http://4249964.blog.51cto.com/4239964/1573434

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