生產者與消費者模型 重要

2021-08-11 22:12:37 字數 1794 閱讀 3366

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 三種關係 三種關係分別指的是 消費者和消費者,生產者和生產者,生產者和消費者 其中消費者和消費者,生產者和生產者之間都屬於競爭關係,生產者和消費者之間的關係相當於是一種食物鏈之間的...