什麼是生產者消費者模式
生產者消費者模式是通過乙個容器來解決生產者和消費者的強耦合問題。生產者和消費者彼此之間不直接通訊,而通過阻塞佇列來進行通訊,所以生產者生產完資料之後不用等待消費者處理,直接扔給阻塞佇列,消費者不找生產者要資料,而是直接從阻塞佇列裡取,阻塞佇列就相當於乙個緩衝區,平衡了生產者和消費者的處理能力。
這個阻塞佇列就是用來給生產者和消費者解耦的。縱觀大多數設計模式,都會找乙個第三者出來進行解耦
#encoding=utf-8
import threading
import time
#python2中
from queue import queue
#python3中
# from queue import queue
class
producer
(threading.thread):
defrun
(self):
global queue
count = 0
while
true:
if queue.qsize() < 1000:
for i in range(100):
count = count +1
msg = '生成產品'+str(count)
queue.put(msg)
print(msg)
time.sleep(0.5)
class
consumer
(threading.thread):
defrun
(self):
global queue
while
true:
if queue.qsize() > 100:
for i in range(3):
msg = self.name + '消費了 '+queue.get()
print(msg)
time.sleep(1)
if __name__ == '__main__':
queue = queue()
for i in range(500):
queue.put('初始產品'+str(i))
for i in range(2):
p = producer()
p.start()
for i in range(5):
c = consumer()
c.start()
生成者消費者問題
自己實踐的 生成者消費者問題 public class threaddemo 生產者 class producer implements runnable public void run 消費者 class consumer implements runnable public void run c...
Python之程序 執行緒 協程(生產者消費者模型)
本篇主要總結一下非常有名的生成者消費者模型 概念引用 1 為什麼要使用生產者和消費者模型?2 什麼是生產者消費者模型?生產者消費者模型是通過乙個容器來解決生產者和消費者的強耦合問題。生產者和消費者彼此之間不直接通訊,而通過阻塞佇列來進行通訊,所以生產者生產完資料之後不用等待消費者處理,直接扔給阻塞佇...
Python 執行緒佇列 生產者與消費者
執行緒佇列,生產者與消費者 執行緒佇列 from queue import queue 先進先出佇列 from queue import priorityqueue 優先順序佇列 繼承了queue from queue import lifoqueue 後進先出 建立佇列 q queue 3 放資料...