上一期我们讲了python中多线程的使用,忘记的小伙伴请戳链接复习,https://zhuanlan.zhihu.com/p/262638052。

还记得我们说到,多线程并不是真正的并发,只是充分利用了等待时间,所以当遇到CPU密集型的任务时,多线程就力不从心了,这时候要请出本文的主角多进程。

多进程的使用方法和上一期多线程极为相似,实际上在multiprocessing库中多线程只是在多进程的基础上多封装了一层,话不多说,直接上代码。

# 定义一个CPU密集的计算任务,重复做50万次运算

看看打印的输出结果,在单进程模式下,每次都在同一个进程ID下运行,耗时21秒

Run task 0, pid 3820

Task 0 finished, cost 3.78 seconds.

Run task 1, pid 3820

Task 1 finished, cost 3.55 seconds.

Run task 2, pid 3820

Task 2 finished, cost 3.53 seconds.

Run task 3, pid 3820

Task 3 finished, cost 3.58 seconds.

Run task 4, pid 3820

Task 4 finished, cost 3.42 seconds.

Run task 5, pid 3820

Task 5 finished, cost 3.53 seconds.

Normal: 21.383224725723267

在多进程模式下,由于我们在程序中设置了开启4个进程,可以看到6个计算任务在最开始只同时开始了4个,并且是位于不同的进程ID下,只有当某个任务运行结束,才会补上下一个任务,最多不超过4个。在多进程模式下,总耗时9s。值得注意的是,多进程是极为消耗计算机资源的,读者可以尝试在运行时,检查计算机的CPU利用率,会发现有了几倍的飙升,因此使用多进程模式一定要结合实际情况量力而行。

Run task 0, pid 12240

Run task 1, pid 16864

Run task 2, pid 15436

Run task 3, pid 17808

Task 3 finished, cost 4.61 seconds.

Run task 4, pid 17808

Task 1 finished, cost 4.66 seconds.

Run task 5, pid 16864

Task 2 finished, cost 4.74 seconds.

Task 0 finished, cost 4.79 seconds.

Task 4 finished, cost 4.04 seconds.

Task 5 finished, cost 4.06 seconds.

Pool: 9.227919340133667

由于有了上一期的基础,本文快速地综述了python中多进程最基础的部分,能力有效,如有谬误请不吝指出。

python多进程_python多进程相关推荐

  1. python 通信模块_python 多进程通信模块

    多进程通信方法好多,不一而数.刚才试python封装好嘅多进程通信模块 multiprocessing.connection. 简单测试一下,效率还可以,应该系对socket封装,效率可以达到4krp ...

  2. python 彻底解读多线程与多进程_python 多进程与多线程浅析

    python多线程是伪多线程,同时间最多只有一个线程在执行,但这样并不代码python的多线程没有作用,对于IO密集型的系统,python的多线程还是能极大的提升性能- 关于python伪多线程可以去 ...

  3. python多进程_Python多进程实践

    本文重点探究以下几个内容: 创建进程Process 进程间数据传递Queue/Pipe/Value/Array/Manager 进程池Pool 创建进程Process 创建进程方式如下: 可以看出,P ...

  4. python管道_python 多进程之管道实例(模板)

    python 多进程之管道实例(模板) #2012-02-27磁针石 #承接软件自动化实施与培训验证码破解软件破解脚本开发测试和python培训等 #gtalk:ouyangchongwu#gmail ...

  5. python queue 多进程_python中的Queue与多进程(multiprocessing)

    最近接触一个项目,要在多个虚拟机中运行任务,参考别人之前项目的代码,采用了多进程来处理,于是上网查了查python中的多进程 一.先说说Queue(队列对象) Queue是python中的标准库,可以 ...

  6. python多线程和多进程的使用_python多线程与多进程

    python多线程与多进程 python多线程 python中提供两个标准库thread和threading用于对线程的支持,python3中已放弃对前者的支持,后者是一种更高层次封装的线程库,接下来 ...

  7. python开多少进程合适_python多进程基础

    python中的多进程编程方式和多线程非常相似,几乎可以说只是换了一些函数,有了之前讲过的多线程基础,很多地方我就只展示一些代码,在涉及到差别的地方再着重说明. 本文分为如下几个部分事先说明 最简单的 ...

  8. python 断点下载_python多进程断点续传分片下载器

    标签:python 下载器 多进程 因为爬虫要用到下载器,但是直接用urllib下载很慢,所以找了很久终于找到一个让我欣喜的下载器.他能够断点续传分片下载,极大提高下载速度. #! /usr/bin/ ...

  9. python多线程和多进程的区别_python中多线程与多进程的区别

    线程的概念: 线程是操作系统中进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程可以有多个线程,每条线程可以同时执行不同的任务.一个 ...

最新文章

  1. [导入]如何用WAP手机远程遥控电脑
  2. Node.js 指南(Docker化Node.js Web应用程序)
  3. Java 中类的比较与排序方法(应用Comparable接口与Comparator接口)通俗易懂
  4. Animation插值器:解决Android Animation 循环执行的停顿问题
  5. 《数据库SQL实战》查找所有员工的last_name和first_name以及对应的dept_name
  6. csv格式清洗与转换python_实例详解Python中 CSV格式清洗与转换
  7. Python学习:day21正则表达式
  8. 安装JavaFX Scene Builder 到Eclipse
  9. vue各路径,组件都没问题,但页面空白
  10. 调查 | 用户无法识别网络钓鱼攻击
  11. [Mac OS] Homebrew简介及安装wine
  12. UE4流关卡与无缝地图切换总结
  13. 那些年啊,那些事——一个程序员的奋斗史 ——21
  14. 【模拟】相似度 (similar.pas/c/cpp)
  15. 我的专业计算机作文说明文,我的电脑作文说明文
  16. linux删除指定的行
  17. 自行封装移动端touch事件
  18. Java笔试总结(选择题)
  19. python爬网易歌单_Python爬取网易云歌单
  20. 【微信小程序支付功能】uniapp实现微信小程序支付功能

热门文章

  1. 图神经网络(Graph Neural Networks,GNN)综述
  2. 3.2亿人都在刷抖音,而优秀的人在看这几个公众号!
  3. 【每日一算法】种花问题
  4. 操作系统学习:Linux0.12初始化详细流程-进程1调度与读取硬盘数据
  5. SPU表管理之查询获取SPU表列表数据
  6. ValueError: not enough values to unpack (expected 3, got 0)问题
  7. 汇编语言 第3版 王爽 检测点习题部分—答案及详细解析 检测点3.1
  8. 教程 | 基于LSTM实现手写数字识别
  9. 深度学习之后会是啥?
  10. 面试官(7): 聊一聊 Babel?