Python中的多进程并行简明教程
1. 什么是多进程并行
一般来说,多进程意味着并行运行两个或者多个任务。在Python中我们可以使用python内置的multiprocessing模块来实现这一功能。
我们来举个栗子,假设我们需要运送十个快递从A点到B点,一个快递员一次只能运送一个快递花费时间为十秒钟,如果我们程序是顺序运行的,也就是说完成这项任务我们需要让一个快递员运送十次,那么此时完成这项任务的时间为一百秒;但是如果我们采用多进程处理,假设我们开十个线程,也就意味着此时我们可以同时拥有十个快递员来并行工作,这时我们完成这项任务的耗时仅需要十秒钟即可。
2. 多进程vs多线程
上图直观的显示了多进程和多线程处理的区别。在第一节的例子中我们使用多线程会比较好,但是如果我们的函数需要更多的处理能力和更多的内存,那么使用多进程是理想的,因为对于使用多进程的程序来说,每个子进程都会有一个专属的 CPU 和内存。 因此,如果我们长时间运行的函数需要更多的处理能力和内存,那么我们更应该使用多进程而不是多线程。
3. 多进程实现
讲了这么多文字,很多童鞋可能还是云里雾里。那么我们来举个栗子,从代码层面进行理解吧。。。
3.1 顺序执行
假设我们的搬运逻辑用代码实现如下:
def long_running_function(box_index):time.sleep(10)print("move box {} from A to B ...".format(box_index))return
如果我们使用顺序执行的方式,也就是让一个快递员搬运十次,那么此时的代码逻辑如下:
def test1():time1 = time.time()for index in range(0, 10):long_running_function(index)time2 = time.time()print("time consume {} s".format(time2-time1))
上述模拟代码的输出如下:
move box 0 from A to B ...
move box 1 from A to B ...
move box 2 from A to B ...
move box 3 from A to B ...
move box 4 from A to B ...
move box 5 from A to B ...
move box 6 from A to B ...
move box 7 from A to B ...
move box 8 from A to B ...
move box 9 from A to B ...
time consume 100.050865650177 s
3.2 多进程并行执行
为了实现多进程,我们需要引入multiprocessing包,同时利用Process创建子进程,利用start来启动子进程,利用join函数实现阻塞住主进程等待子进程结束。
上述搬运箱子多进程方式代码实现如下:
import time
import multiprocessing
def test2():time1 = time.time()_processes = []for index in range(0, 10):_process = multiprocessing.Process(target=long_running_function, args=(index,))_process.start()_processes.append(_process)for _process in _processes:_process.join()time2 = time.time()print("time consume {} s".format(time2 - time1))
上述模拟代码的输出如下:
move box 0 from A to B ...
move box 8 from A to B ...
move box 7 from A to B ...
move box 3 from A to B ...
move box 2 from A to B ...
move box 9 from A to B ...
move box 5 from A to B ...
move box 1 from A to B ...
move box 6 from A to B ...
move box 4 from A to B ...
time consume 10.547523975372314 s
4. 参考
本文重点参考了以下链接,详情请戳。。。
链接一
链接二
5. 总结
本文简单介绍了Python中使用multiprocessing来实现多进程并行,并和程序顺序执行做了相应的对比,并给出了相应的代码实现。
您学废了嘛?
关注公众号《AI算法之道》,获取更多AI算法资讯。
Python中的多进程并行简明教程相关推荐
- Python中的Assert语句简明教程
1. 引言 如果你是一个Python新手,那么你可能会在一些代码中看到assert关键字的语句.对于该语句,有人喜欢有人不喜欢,本文重点介绍Assert语句的作用以及什么时候应该使用该语句. 闲话少说 ...
- python多线程好还是多协程好_深入浅析python中的多进程、多线程、协程
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- Python中使用BeautifulReport形成测试报告教程
Python中使用BeautifulReport形成测试报告教程 pyton中使用BeautifulReport形成测试报告需要先安装BeautifulReport模块 打开cmd窗口输入 pip i ...
- 在Python中使用HTML模版的教程
在Python中使用HTML模版的教程 转载 2018-02-12 作者:廖雪峰 这篇文章主要介绍了在Python中使用HTML模版的教程,HTML模版也是Python的各大框架下的一个基本功能 ...
- Python 中的多进程(进程之间的通信)
文章目录 在进程之间共享数据 共享内存 服务器进程 进程之间的通信 队列 管道 这篇文章将会讲解在 Python 中使用 多进程模块时在进程之间共享数据和消息传递的概念. 在多处理中,任何新创建的进程 ...
- Python中安装PyOpenGL:详细教程
Python中安装PyOpenGL:详细教程 如果你对Python编程有一定的了解,并且在计算机图形学领域有所涉猎,你可能会使用到PyOpenGL.PyOpenGL是Python的一个OpenGL绑定 ...
- python廖雪峰_【Python】python中实现多进程与多线程
进程与线程 进程(process)就是任务,是计算机系统进行资源分配和调度的基本单位[1].比如,打开一个word文件就是启动了一个word进程. 线程(thread)是进程内的子任务.比如word中 ...
- async python两个_【Python】python中实现多进程与多线程
进程与线程 进程(process)就是任务,是计算机系统进行资源分配和调度的基本单位[1].比如,打开一个word文件就是启动了一个word进程. 线程(thread)是进程内的子任务.比如word中 ...
- 你所谓的鸡肋?Python中的多进程、多线程和协程
本文撰写过程中参考了胡俊峰老师<Python程序设计与数据科学导论>课程的内容. 概念: 并发:一段时间内同时推进多个任务,但不一定要在一个时刻同时进行多个任务. 并行:一段时间内同时推进 ...
最新文章
- 3分钟带你理解深度学习中的RNN和LSTM究竟是什么?
- 红帽集群套件RHCS四部曲(维护篇)
- main函数或者run函数的一个作用
- 二十三、 爬取mzsock网站写真社区
- 第二版全新博客园win phone 客户端
- 如何去除Druid数据监控广告?
- 临近失业,如何拯救自己?
- 【数字信号去噪】基于matlab中值滤波+奇异值分解(SVD)数字信号降噪【含Matlab源码 1021期】
- 基于小米球(Ngrok)实现外网访问
- java eclipse参考文献_2019-2020年java毕设论文参考文献.doc
- 为微信小程序扩展自定义babel编译功能
- 全国大学生英语竞赛C类
- wp-bugku-秋名山老司机
- 容联云通讯完成发送验证码
- 领域分类的问题_别人的问题领域
- 易语言 服务端给客户端发弹窗信息源码
- Am335x 平台上GSM 3G/4G modem的一些硬件和软件的杂事
- Ubuntu 联网 eht0没有问题
- 2. 算法 (图灵机到底是个啥 ?)
- 微信小程序6位验证码功能实现
热门文章
- 机器学习《Machine Learning》----(2)模型评估与选择
- 学计算机怎么考药师证,自学考药师证难吗 都考什么
- 数码宝贝大冒险 2 再临数码宝贝世界
- Reivt:文件中的三维视图没有颜色
- android小米定位,Android填坑系列:在小米系列等机型上放开定位权限后的定位请求弹框示例...
- Pulsar Summit Asia 2020 | 新增议题揭秘:Pulsar 2.7.0, 华为云,平安证券, 苏宁等大咖云集...
- 新中大、金蝶、用友产品技术比较
- 【webrtc0419 注册功能】
- excel怎么批量插行_excel中批量插入对应名称的图片,你用了1天,同事2分钟就搞定了...
- 【Linux】win11 家庭版通过VMware安装Ubuntu 2022虚拟机