基於佇列實現生產者消費者模型

2022-02-01 06:31:31 字數 4010 閱讀 6319

code

from

multiprocessing 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.py

58397

吃 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

from

multiprocessing 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

from

multiprocessing 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.py

58426生產了 包子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佇列 生產者消費者模型

生產者消費者模型 在軟體開發的過程中,經常碰到這樣的場景 某些模組負責生產資料,這些資料由其他模組來負責處理 此處的模組可能是 函式 執行緒 程序等 產生資料的模組稱為生產者,而處理資料的模組稱為消費者。在生產者與消費者之間的緩衝區稱之為倉庫。生產者負責往倉庫運輸商品,而消費者負責從倉庫裡取出商品,...