使用JoinableQueue解决生产消费同步问题
1 from multiprocessing import Process 2 from multiprocessing import JoinableQueue 3 import time,random 4 5 def producer(food,q): 6 for i in range(1,11): 7 q.put('%s-%i'%(food,i)) 8 print('生产了%s-%i'%(food,i)) 9 time.sleep(random.random()) 10 q.join() 11 12 13 def consumer(name,q): 14 while 1: 15 food = q.get() 16 if food == None :break 17 print('%s吃了%s'%(name,food)) 18 time.sleep(random.random()) 19 q.task_done() 20 21 22 23 if __name__ == '__main__': 24 q = JoinableQueue() 25 p1 = Process(target=producer,args=('馒头',q)) 26 p1.start() 27 p2 = Process(target=producer,args=('包子',q)) 28 p2.start() 29 30 c1 = Process(target=consumer,args=('大黄',q,)) 31 c1.daemon = True 32 c1.start() 33 c2 = Process(target=consumer,args=('大白',q,)) 34 c2.daemon = True 35 c2.start() 36 c3 = Process(target=consumer,args=('大灰',q,)) 37 c3.daemon = True 38 c3.start() 39 p1.join() 40 p2.join()