1. 程式人生 > >python-多線程3-生產者消費者

python-多線程3-生產者消費者

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 = 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個

好難........搞暈了

python-多線程3-生產者消費者