code
frommultiprocessing import process,queue
import time,random,os
def consumer(q,p1):
while
true:
res=q.get
()
if(res=="
finish"):
break
time.sleep(random.randint(
1,3))
print(
'%s 吃 %s
' %(os.getpid(),res))
def producer(q):
for i in range(10
): time.sleep(random.randint(
1,3))
res='
包子%s
' %i
q.put(res)
print(
'生產了 %s
' %(str(os.getpid())+res))
if __name__ == '
__main__':
q=queue()
#生產者們:即廚師們
q.put(
"tea")
p1=process(target=producer,args=(q,))
#消費者們:即吃貨們
c1=process(target=consumer,args=(q,p1),)
#開始p1.start()
c1.start()
p1.join()
q.put(
"finish")
print('主
')
outputs
macname@macdemacbook-pro py %python3 cccccc.py58397
吃 tea
生產了 58396包子0
58397
吃 包子0
生產了 58396包子1
58397
吃 包子1
生產了 58396包子2
58397
吃 包子2
生產了 58396包子3
58397
吃 包子3
生產了 58396包子4
58397
吃 包子4
生產了 58396包子5
58397
吃 包子5
生產了 58396包子6
生產了 58396包子7
58397
吃 包子6
生產了 58396包子8
58397
吃 包子7
58397
吃 包子8
生產了 58396包子9
主58397
吃 包子9
macname@macdemacbook-pro py %
可自動退出版本
code
frommultiprocessing import process,queue
import time,random,os
def consumer(q):
while
true:
res=q.get
()
if res is none:break
#收到結束訊號則結束
time.sleep(random.randint(
1,3))
print(
'%s 吃 %s
' %(os.getpid(),res))
def producer(q):
for i in range(10
): time.sleep(random.randint(
1,3))
res='
包子%s
' %i
q.put(res)
print(
'%s生產了 %s
' %(os.getpid(),res))
q.put(none) #傳送結束訊號
if __name__ == '
__main__':
q=queue()
#生產者們:即廚師們
p1=process(target=producer,args=(q,))
#消費者們:即吃貨們
c1=process(target=consumer,args=(q,))
#開始p1.start()
c1.start()
print('主
')
outputs
macname@macdemacbook-pro py %python3 cccccc.py主58417生產了 包子0
58418
吃 包子0
58417生產了 包子1
58418
吃 包子1
58417生產了 包子2
58418
吃 包子2
58417生產了 包子3
58417生產了 包子4
58418
吃 包子3
58417生產了 包子5
58418
吃 包子4
58417生產了 包子6
58417生產了 包子7
58418
吃 包子5
58417生產了 包子8
58418
吃 包子6
58418
吃 包子7
58418
吃 包子8
58417生產了 包子9
58418
吃 包子9
macname@macdemacbook-pro py %
code
frommultiprocessing import process,queue
import time,random,os
def consumer(q):
while
true:
res=q.get
()
if res is none:break
#收到結束訊號則結束
time.sleep(random.randint(
1,3))
print(
'%s 吃 %s
' %(os.getpid(),res))
def producer(q):
for i in range(2
): time.sleep(random.randint(
1,3))
res='
包子%s
' %i
q.put(res)
print(
'%s生產了 %s
' %(os.getpid(),res))
if __name__ == '
__main__':
q=queue()
#生產者們:即廚師們
p1=process(target=producer,args=(q,))
#消費者們:即吃貨們
c1=process(target=consumer,args=(q,))
#開始p1.start()
c1.start()
p1.join()
q.put(none) #傳送結束訊號
print('主
')
outputs
macname@macdemacbook-pro py %python3 cccccc.py58426生產了 包子0
58426生產了 包子1
58427
吃 包子0
主58427
吃 包子1
macname@macdemacbook-pro py %
佇列,生產者消費者模型
from multiprocessing import process,lock import os,time,json with open user w encoding utf 8 as f dic json.dump dic,f def search with open user r enco...
基於佇列實現生產者消費者(Python)
進城之間資料隔離 程序之間通訊 ipc inter process communication 基於檔案 同一臺機器上的多個程序之間通訊 queue 佇列 基於socket的檔案級別的通訊來完成資料傳遞的 基於網路 同一臺機器或者多台機器上的多程序間通訊 第三方工具 訊息中介軟體 memcache ...
python佇列 生產者消費者模型
生產者消費者模型 在軟體開發的過程中,經常碰到這樣的場景 某些模組負責生產資料,這些資料由其他模組來負責處理 此處的模組可能是 函式 執行緒 程序等 產生資料的模組稱為生產者,而處理資料的模組稱為消費者。在生產者與消費者之間的緩衝區稱之為倉庫。生產者負責往倉庫運輸商品,而消費者負責從倉庫裡取出商品,...