python-多線程3-生產者消費者
阿新 • • 發佈:2017-06-17
reading run cnblogs eas cond 多線程 rod con range
‘‘‘生產者和消費者‘‘‘ ‘‘‘ 用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 = namedef 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個
好難........搞暈了
python-多線程3-生產者消費者