并发-生产消费问题

使用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()

猜你喜欢

转载自www.cnblogs.com/ershoupaoche/p/9770799.html