Python之併發程式設計(三)生產者與消費者模型

2022-09-15 17:48:12 字數 1255 閱讀 9272

生產者和消費者模型:

#在併發程式設計中使用生產者和消費者模式能夠解決絕大多數併發問題。該模式通過平衡生產線程和消費執行緒的工作能力來提高程式的整體處理資料的速度。

為什麼要使用生產者和消費者模式

什麼是生產者消費者模式

#生產者消費者模式是通過乙個容器來解決生產者和消費者的強耦合問題。生產者和消費者彼此之間不直接通訊,而通過阻塞佇列來進行通訊,所以生產者生產完資料之後不用等待消費者處理,直接扔給阻塞佇列,消費者不找生產者要資料,而是直接從阻塞佇列裡取,阻塞佇列就相當於乙個緩衝區,平衡了生產者和消費者的處理能力。

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

from multiprocessing import process,queue

import time,random,os

def consumer(q):

while true:

res=q.get()

time.sleep(random.randint(1,3))

print('\033[45m%s 吃 %s\033[0m' %(os.getpid(),res))

def producer(q):

for i in range(10):

time.sleep(random.randint(1,3))

res='包子%s' %i

q.put(res)

print('\033[44m%s 生產了 %s\033[0m' %(os.getpid(),res))

if __name__ == '__main__':

q=queue()

#生產者們:即廚師們

p1=process(target=producer,args=(q,))

#消費者們:即吃貨們

c1=process(target=consumer,args=(q,))

#開始p1.start()

c1.start()

print('主')

#生產者消費者模型總結

#程式中有兩類角色

一類負責生產資料(生產者)

一類負責處理資料(消費者)

#引入生產者消費者模型為了解決的問題是:

平衡生產者與消費者之間的工作能力,從而提高程式整體處理資料的速度

#如何實現:

生產者<-->佇列<——>消費者

#生產者消費者模型實現類程式的解耦和

C 多執行緒 三 生產者和消費者

前面說過,每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥...

作業系統實驗三 生產者,消費者

實驗任務 生產者 消費者模型為依據,在windows環境下建立乙個控制台程序,在該程序中建立n個執行緒模擬生產者和消費者,實現程序 執行緒 的同步與互斥。基礎知識 createmutex的用法 詳見官方文件 handle createmutex lpsecurity attributes lpmut...

C 併發程式設計(五) 生產者 消費者

生產者 消費者 producer consumer 也叫有限緩衝 bounded buffer 是多執行緒同步的經典問題之一。詳見 wikipedia。改寫自 boost.thread 自帶的示例 libs thread example condition.cpp 以 條件變數 實現同步。inclu...