多进程的概念在操作系统里面很常见了,为的就是实现多任务的执行,也就是说从单例执行任务到任务的多个执行.实现多任务的模式,一般为master-worker的主从架构.master负责分配任务,worker负责执行任务,这一点其实跟很多分布式系统的资源调度如出一辙.
在实际中会遇到这样一种场景,就是数据的来源有很多,然后需要同时处理,这个时候如果一个个的处理数据,那么就是单任务模式,效率可想而知.
这就好比我们小时候做作业,语数外政治地理历史等,如果明天要交作业了,晚上我们一门门的做,这个时候我们就想象着,如果能同时能启动所有的作业,在不同的作业间不停切换该多好.因此,我采用python的多进程去处理数据来达到多任务的状态,大致的构思可以看下面一个概要图:
引入multiprocessing后,通过创建队列,将多任务放入队列里面;
创建相应的任务,一个作为数据的处理,一个作为数据处理后的消费,可以看成是一个生产者-消费者的模型.
核心的实现如下所示:
首先创建了一个队列q,作为多进程的管理与数据的共享;然后,创建了两个子进程p,p1,一个作为生产者,另一个作为数据处理后的消费者.接着再定义好生产者,消费者的处理逻辑.
最后,我们启动这个程序,来看看后台是否跟我们想象的一致是多任务处理.
通过进程可以看到,已经有3个python进程在执行,实现了多进程与进程间的通信.
领取专属 10元无门槛券
私享最新 技术干货