Skip to main content
 Web开发网 » 编程语言 » Python语言

如何使用Python的multiprocessing进行分布式计算?

2021年11月27日4040百度已收录

由于GIL的存在,python中的多线程其实并不是真正意义上的多线程,前面一篇文章Python中的多线程与多进程那些事 中提到I/O密集型使用多线程并发执行提高效率、计算密集型使用多进程并行执行提高效率。

针对计算密集型的任务,我们如何通过多进程提高效率?

Window下的multiprocessing分布式计算基于multiprocessing、queue等模块实现简易的分布式计算框架。服务节点负责任务的派发和任务结果的采集,工作节点分布在同一电脑的不同进程,或者其他电脑上,负责任务执行和结果反馈,服务节点与工作节点通过Queue实现数据共享(任务下发、结果反馈)。

其中包含Task、MaterWork、SlaveWork三个模块,大体介绍及源码如下:

Task模块根据任务需求,将自己的任务单独封装在task模块中。

如何使用Python的multiprocessing进行分布式计算?  Python分布式计算 第1张

MaterWork(主节点/服务节点)负责任务派发和结果采集,主从节点通过Queue实现任务、结果共享。代码中注释中已介绍的较清楚,这里不做赘述。

如何使用Python的multiprocessing进行分布式计算?  Python分布式计算 第2张

SlaveWork(从节点/计算节点)

如何使用Python的multiprocessing进行分布式计算?  Python分布式计算 第3张

使用说明3.1 在Task.py 添加任务函数。

如何使用Python的multiprocessing进行分布式计算?  Python分布式计算 第4张

3.2 调整主从节点任务派发具体函数、次数或参数。一般情况分发次数等于任务数,即分发任务的参数。

# 添加待处理任务,实际应用过程添加的任务可以为函数的参数

for i in range(0, 10):

task = Task(i).computer()

print 'Dispatch job: {0}'.format(i)

dispatched_jobs.put(task)

3.3 启动主节点

如何使用Python的multiprocessing进行分布式计算?  Python分布式计算 第5张

3.3 启动从节点

如何使用Python的multiprocessing进行分布式计算?  Python分布式计算 第6张

将从节点计算模块发送至不同电脑,启动从节点即实现分布式计算,即N个从节点消费服务节点分发任务,并返回任务执行状态、结果。

3.4 启动从节点后,可以在主节点运行界面,看到任务完成情况。

如何使用Python的multiprocessing进行分布式计算?  Python分布式计算 第7张

若对你有帮助,点赞支持一下。

评论列表暂无评论
发表评论
微信