from multiprocessing import process,queue
import time,os,random
def procducer(q):
for i in range(10):
res = '包子%s'%i
time.sleep(0.5)
q.put(res)
print('%s 生產了 %s'%(os.getpid(),res))
def consumer(q):
while true:
res = q.get()
if res is none:
break
print('%s 吃 %s'%(os.getpid(),res))
time.sleep(random.randint(2,3))
if __name__ == '__main__':
q = queue()
p = process(target=procducer,args=(q,))
c = process(target=consumer,args=(q,))
p.start()
c.start()
p.join()
q.put(none)
print('主')
from multiprocessing import process,queue,joinablequeue
import time,random,os
def procducer(food,q):
for i in range(3):
res='%s%s' %(food,i)
time.sleep(0.5)
q.put(res)
print('%s 生產了 %s' %(os.getpid(),res))
q.join() #為了讓p不死,內含計數器,(9)
def consumer(q):
while true:
res=q.get()
print('%s 吃 %s' %(os.getpid(),res))
time.sleep(random.randint(2,3))
q.task_done() # 讓q.join 計數器逐個減一
if __name__ == '__main__':
q=joinablequeue()
p1=process(target=procducer,args=('包子',q,))
p2=process(target=procducer,args=('泔水',q,))
p3=process(target=procducer,args=('**',q,))
c1=process(target=consumer,args=(q,))
c2=process(target=consumer,args=(q,))
c1.daemon=true ## 就加了個守護程序。
c2.daemon=true
p1.start()
p2.start()
p3.start()
c1.start()
c2.start()
p1.join() #為了讓主程序不死
p2.join()
p3.join()
#生產者結束--->q.join()----->消費者確實把所有資料都收到
print('主',os.getpid())
為你鍾情 --- 張先生
生產者與消費者模型
先介紹幾個函式 生產消費者模型 二者共享資料value,這裡,生產者是producter,消費者是consumer。生產者負責放物品到value中,消費者使用wait 等待生產者的通知。當得到通知後,消費者取出物品,並且用notify 通知生產者,可以再放下一批物品。例項 package cn.ed...
生產者與消費者模型
如圖 一共有三種關係 生產者與生產者的互斥關係,消費者與消費者的互斥關係,生產者與消費者的互斥且同步關係。兩種角色 生產者 執行緒 與消費者 執行緒 乙個交易場所 倉庫 一段記憶體空間,且可存可取 二 基於單向鍊錶的生產者消費者模型 1 我們這裡用乙個單鏈表當做那段共享記憶體,簡單實現生產者消費者模...
生產者與消費者模型
生產者 消費者模型描述的是有一塊緩衝區作為倉庫,生產者可將產品放入倉庫,消費者可以從倉庫中取出產品,模型圖如下所示 1 三種關係 三種關係分別指的是 消費者和消費者,生產者和生產者,生產者和消費者 其中消費者和消費者,生產者和生產者之間都屬於競爭關係,生產者和消費者之間的關係相當於是一種食物鏈之間的...