案例一
from multiprocessing import Process,Queue
import queue
import time
import random
def consumer(q,name):
while True:
food = q.get()
if food is None:
break
time.sleep(random.uniform(0.5,1))
print(’%s消费了%s’%(name,food))
def producer(q,name,food):
for i in range(5):
time.sleep(random.uniform(0.3,0.8))
print(’%s生产了%s’%(name,food))
q.put(food+str(i))
if name == ‘main’:
q = Queue()
c1 = Process(target=consumer, args=(q, “消费者1”))
c2 = Process(target=consumer, args=(q, “consuer2”))
c1.start()
c2.start()
p1 = Process(target=producer, args=(q, "生产者1", "产品1"))
p2 = Process(target=producer, args=(q, "生产者2", "产品2"))
p1.start()
p2.start()
p1.join()
p2.join()
q.put(None)
q.put(None)
案例二
承接上面导入的包
from multiprocessing import Process,JoinableQueue
def consumer(q,client):
while True:
product = q.get()
time.sleep(random.uniform(0.6,2.2))
print(’%s购买了 %s’ %(client,product))
q.task_done()
def producer(q,client,product):
for i in range(5):
time.sleep(random.uniform(0.2,0.9))
print(’%s 制造了 %s’ %(client,product+str(i)))
q.put(product+str(i))
if name == ‘main’:
jq = JoinableQueue()
p1 = Process(target=consumer,args=(jq,‘消费者one’))
p1.daemon = True
p1.start()
p2 = Process(target=producer,args=(jq,'生产者one','黄金'))
p2.start()
p2.join()
jq.join()