生产者消费者模型
from multiprocessing import Process,Queue import time,random def consumer(q,name): while True: f = q.get() if f is None: print('%s获得了一个空'%name) break print('\033[31m%s消费了%s\033[0m'%(name,f)) time.sleep(random.randint(1,3)) def producer(name,food,q): for i in range(4): time.sleep(random.randint(1,3)) f = '%s生产了%s%s'%(name,food,i) print(f) q.put(f) if __name__ == '__main__': q = Queue(20) p1 = Process(target=producer,args=('Egon','包子',q)) p2 = Process(target=producer,args=('wusir','泔水',q)) c1 = Process(target=consumer,args=(q,'jinboss')) c2 = Process(target=consumer,args=(q,'alex')) p1.start() p2.start() c1.start() c2.start() p1.join() p2.join() q.put(None) q.put(None)
JoinableQueue
from multiprocessing import Process from multiprocessing import JoinableQueue import time,random def consumer(q,name): while True: f = q.get() print('\033[31m%s消费了%s\033[0m'%(name,f)) time.sleep(random.randint(1,3)) q.task_done() def producer(name,food,q): for i in range(4): time.sleep(random.randint(1,3)) f = '%s生产了%s%s'%(name,food,i) print(f) q.put(f) q.join() if __name__ == '__main__': q = JoinableQueue(20) p1 = Process(target=producer,args=('Egon','包子',q)) p2 = Process(target=producer,args=('wusir','泔水',q)) c1 = Process(target=consumer,args=(q,'jinboss')) c2 = Process(target=consumer,args=(q,'alex')) p1.start() p2.start() c1.daemon = True c2.daemon = True c1.start() c2.start() p1.join() p2.join()