标签:oba threading run reading pre ase join() init rod
‘‘‘生产者和消费者‘‘‘ ‘‘‘ 用python写一个多线程的生产者和消费者 生产者x x>0,有东西,print(不生产) x=0,没东西,print(生产) for循环 消费者x x=0,没东西,print(不消费) x>0,有东西,print(消费) for循环 分别封装成class ‘‘‘ import threading class Producer(threading.Thread): def __init__(self,name): threading.Thread.__init__(self) self.name = name def run(self): global x tt.acquire() if x>0: #print("我已经生产完毕了,你随意去吧") tt.wait() else: for i in range(5): x=x+1 print("%s在生产中,第%d个"%(self.name,x))#线程的名字 tt.release() class Consumer(threading.Thread): def __init__(self,name): threading.Thread.__init__(self) self.name = name def run(self): global x tt.acquire() if x==0: #print("没东西了") tt.wait() else: for i in range(5): x=x-1 print("%s在消费中,第%d个"%(self.name,x+1)) tt.release() x = 0 #tt = threading.Lock() tt = threading.Condition() p = Producer("producer") c = Consumer("consumer") p.start() c.start() p.join() c.join()
结果:
producer在生产中,第1个
producer在生产中,第2个
producer在生产中,第3个
producer在生产中,第4个
producer在生产中,第5个
consumer在消费中,第5个
consumer在消费中,第4个
consumer在消费中,第3个
consumer在消费中,第2个
consumer在消费中,第1个
好难........搞晕了
标签:oba threading run reading pre ase join() init rod
原文地址:http://www.cnblogs.com/R-bear/p/7031722.html