0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Python多进程的理由

汽车玩家 来源:编程派 作者:饒木陽 2020-04-04 16:50 次阅读

Python 是运行在解释器中的语言,查找资料知道, python 中有一个全局锁( GI),在使用多进程( Threa)的情况下,不能发挥多核的优势。而使用多进程( Multiprocess),则可以发挥多核的优势真正地提高效率。

对比实验

资料显示,如果多线程的进程是 CPU 密集型的,那多线程并不能有多少效率上的提升,相反还可能会因为线程的频繁切换,导致效率下降,推荐使用多进程;如果是 IO 密集型,多线程进程可以利用 IO 阻塞等待时的空闲时间执行其他线程,提升效率。所以我们根据实验对比不同场景的效率

使用Python多进程的理由

(1)引入所需要的模块

使用Python多进程的理由

(2)定义 CPU 密集的计算函数

使用Python多进程的理由

(3)定义 IO 密集的文件读写函数

使用Python多进程的理由

(4) 定义网络请求函数

使用Python多进程的理由

(5)测试线性执行 IO 密集操作、 CPU 密集操作所需时间、网络请求密集型操作所需时间

使用Python多进程的理由

输出

CPU 密集:95.6059999466、91.57099986076355 92.52800011634827、 99.96799993515015

IO 密集:24.25、21.76699995994568、21.769999980926514、22.060999870300293

网络请求密集型:4.519999980926514、8.563999891281128、4.371000051498413、4.522000074386597、14.671000003814697

(6)测试多线程并发执行 CPU 密集操作所需时间

使用Python多进程的理由

(7)测试多线程并发执行 IO 密集操作所需时间

使用Python多进程的理由

(8)测试多线程并发执行网络密集操作所需时间

使用Python多进程的理由

Output : 0.7419998645782471、0.3839998245239258、0.3900001049041748

(9)测试多进程并发执行 CPU 密集操作所需时间

使用Python多进程的理由

Output : 54.342000007629395、53.437999963760376

(10)测试多进程并发执行 IO 密集型操作

使用Python多进程的理由

Output : 12.509000062942505、13.059000015258789

(11)测试多进程并发执行 Http 请求密集型操作

使用Python多进程的理由

Output : 0.5329999923706055、0.4760000705718994

实验结果

CPU 密集型操作 IO 密集型操作网络请求密集型操作

使用Python多进程的理由

通过上面的结果,我们可以看到:

多线程在 IO 密集型的操作下似乎也没有很大的优势(也许 IO 操作的任务再繁重一些就能体现出优势),在 CPU 密集型的操作下明显地比单线程线性执行性能更差,但是对于网络请求这种忙等阻塞线程的操作,多线程的优势便非常显著了

多进程无论是在 CPU 密集型还是 IO 密集型以及网络请求密集型(经常发生线程阻塞的操作)中,都能体现出性能的优势。不过在类似网络请求密集型的操作上,与多线程相差无几,但却更占用 CPU 等资源,所以对于这种情况下,我们可以选择多线程来执行。

使用Python多进程的理由

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10412

    浏览量

    206467
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83443
收藏 人收藏

    评论

    相关推荐

    线程、进程、多线程、多进程和多任务之间有何关系?

    进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。
    的头像 发表于 01-11 13:39 173次阅读
    线程、<b class='flag-5'>进程</b>、多线程、<b class='flag-5'>多进程</b>和多任务之间有何关系?

    你还是分不清多进程和多线程吗?一文搞懂!

    你还是分不清多进程和多线程吗?一文搞懂! 多进程和多线程是并发编程中常见的两个概念,它们都可以用于提高程序的性能和效率。但是它们的实现方式和使用场景略有不同。 1. 多进程多进程
    的头像 发表于 12-19 16:07 236次阅读

    python32位与62位区别

    Python 是一种广泛使用的高级编程语言,提供了丰富的库和功能,可以用于开发各种应用程序。Python 可以在不同的操作系统上运行,包括 32 位和 64 位的系统。本文将详细介绍 Python
    的头像 发表于 11-23 16:44 534次阅读

    Linux系统上多线程和多进程的运行效率

    关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好
    的头像 发表于 11-10 10:54 416次阅读
    Linux系统上多线程和<b class='flag-5'>多进程</b>的运行效率

    基于ARM-Linux嵌入式系统的多进程并发服务器设计

    电子发烧友网站提供《基于ARM-Linux嵌入式系统的多进程并发服务器设计.pdf》资料免费下载
    发表于 11-08 15:31 0次下载
    基于ARM-Linux嵌入式系统的<b class='flag-5'>多进程</b>并发服务器设计

    进程、线程、多进程与多线程的优缺点

    1、进程 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。 举例说明进程: 想
    的头像 发表于 11-08 15:18 297次阅读
    <b class='flag-5'>进程</b>、线程、<b class='flag-5'>多进程</b>与多线程的优缺点

    shell脚本实现并发多进程

    在Shell脚本中实现并发多进程可以使用以下方法: 使用符号来将其放入后台执行,从而实现并发多进程。例如: #!/bin/bash command1 command3 符号,它们将在后台并发执行
    的头像 发表于 11-08 10:20 444次阅读

    关于Python多进程和多线程详解

    进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”。
    的头像 发表于 11-06 14:46 299次阅读
    关于<b class='flag-5'>Python</b><b class='flag-5'>多进程</b>和多线程详解

    Annoy:用于搜索空间中给定查询点的近邻点

    。如果你想要做性能优化,就必须用上多进程。 但是多进程存在一个问题,就是所有进程的变量都是独立的,B进程访问不到A进程的变量,因此Annoy
    的头像 发表于 10-17 11:32 247次阅读

    浅谈Linux网络编程中的多进程和多线程

    在Linux网络编程中,我们应该见过很多网络框架或者server,有多进程的处理方式,也有多线程处理方式,孰好孰坏并没有可比性,首先选择多进程还是多线程我们需要考虑业务场景,其次结合当前部署环境,是云原生还是传统的IDC等,最后考虑可维护性,其具体的对比在第三部分具体会展
    发表于 08-08 16:56 395次阅读
    浅谈Linux网络编程中的<b class='flag-5'>多进程</b>和多线程

    进程和线程的区别以及优缺点

    在执行,多核 CPU 可以同一时间点有多个进程在执行。 2、多进程、多线程的优缺点 一个进程进程控制块、数据段、代码段组成,进程本身不可以
    的头像 发表于 07-21 11:02 825次阅读

    249.Python教程:20.08 多进程不能共享全局变量 #硬声创作季

    python
    充八万
    发布于 :2023年07月12日 02:22:32

    多进程编程知识汇总

    进程是指正在运行的程序,它拥有独立的内存空间和系统资源,不同进程之间的数据不共享。进程是资源分配的基本单位。
    发表于 06-16 11:08 233次阅读
    <b class='flag-5'>多进程</b>编程知识汇总

    Python多进程学习

    Python 多进程 (Multiprocessing) 是一种同时利用计算机多个处理器核心 (CPU cores) 进行并行处理的技术,它与 Python 的多线程 (Multithreading
    的头像 发表于 04-26 11:04 352次阅读