![382009e74c7f2e838e24f98c5a893406.png](https://img-blog.csdnimg.cn/img_convert/382009e74c7f2e838e24f98c5a893406.png)
由于GIL的存在,Python中的多线程其实并不是真正意义上的多线程,在之前的一篇文章Python中的多线程与多进程那些事 中提到I/O密集型可使用多线程并发执行提高效率、而计算密集型需使用多进程并行执行提高效率。
针对计算密集型的任务,我们如何通过多进程提高效率?
multiprocessing & Queue 实现分布式计算
本文将介绍如何通过multiprocessing.BaseManager、Queue模块实现简易的分布式计算框架。
主节点负责任务的派发和任务结果的采集,从节点可以是在同一电脑/服务器的不同进程,或者其他电脑/服务器上,负责任务执行和结果上报。主节点与从节点通过Queue队列实现数据共享(任务下发、结果反馈)。
整体设计主要分为Task、MasterWork、SlaveWork三个模块,接下来分享一下主要设计及源码。
![875341f9d974687d07b44692d848a79e.png](https://img-blog.csdnimg.cn/img_convert/875341f9d974687d07b44692d848a79e.png)
Task模块
任务模块,根据任务需求将我们的任务单独封装在Task.py模块中,如下: