Python:生产者-消费者模型,多进程同步构建

生产者-消费者模型

在很多数据采集分析、数据通讯、网络爬虫等领域,数据生产者-消费者模型具有重要的作用。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。而数据采集、数据通讯等任务,CPU大部分的时间会花费在IO上,使得信号不能及时分析处理。为了解决这个问题,在多核CPU的支持下,于是引入了生产者和消费者模式。生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。(https://www.jianshu.com/p/f53fb95b5820)

Python多线程的不足

生产者-消费者模型一般采用多线程的方式实现,然而在python中,由于GIT全局锁的存在,多个线程还是在单个内核上分时执行,多线程程序并不能像C++等那样充分利用多核CPU的计算性能,导致单个核心性能不堪重负而其他核心性能的浪费。

Python多进程的一般示例

python中真正支持多核CPU的是多进程并行机制,一般通过调用multiprocessing.Process实现多进程的创建,并且通过multiprocessing.Queue实现生产者进程与消费者进程的数据通信。CSDN上可搜索到的典型示例如下:
多生产者、多消费者模型

# JoinableQueue是一个Queue对象,
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值