今天跟大家分享一个老生常谈的消费者生产者模型
以下为代码实现的一个模拟场景:
3个生产者,在不断提供服务,处理需求,假设1s处理一个。
20个消费者,在不断消耗供给产品,提交需求,假设3s消耗一个。
情景分析:由于消费者的提交需求能力 和 生产者处理需求的能力 不对等,于是出现了供不应求的供销矛盾。
问题:一般情况下,在供不应求时,会有大量的需求被挂起,也就是排队,排队期间消费者不得离开,否则当前所处的队列顺序就被后面的消费者替代。这样所有排队的消费者都无法干别的事,只能空等,类比操作系统中内存、计算单元等资源被空占,影响整体效率。
解决思路:通过队列来提前收取需求,类似于自动帮消费者记录排队顺序,这样等轮到自己时,再去执行。那么节省出来的等待时间,就可以去做别的事情,类比操作系统中资源释放。
概述:
1、通过队列来实现 异步处理的功能;
2、解除client&server之间的程序耦合。
#!/usr/bin/env python
# -- coding = 'utf-8' --
# Author Allen Lee
# Python Version 3.5.1
# OS Windows 7
import queue
import threading
import time
q = queue.Queue()
#定义一个生产岗

本文探讨了在Python中如何利用队列解决消费者生产者模型中的供求矛盾,通过异步处理实现解耦。模拟场景包括3个生产者每秒处理一个请求,20个消费者每3秒消耗一个产品。当供需不对等时,通过队列存储需求,避免资源空占,提高系统效率。
最低0.47元/天 解锁文章
711

被折叠的 条评论
为什么被折叠?



