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

    文章

    10824

    浏览量

    211088
  • python
    +关注

    关注

    55

    文章

    4778

    浏览量

    84439
收藏 人收藏

    评论

    相关推荐

    手写图像模板匹配算法在OpenCV中的实现

    OpenCV中的模板匹配是支持基于NCC相似度查找的,但是不是很好用,一个主要的原因是查找最大阈值,只能匹配一个,自己比对阈值,又导致无法正确设定阈值范围,所以问题很多。于是我重新写了纯Python版本的NCC图像模板匹配的代码实现了一个Python版本的,简单易用,支持
    的头像 发表于 11-11 10:12 144次阅读
    手写图像模板匹配算法在OpenCV中的实现

    Python中多线程和多进程的区别

    Python作为一种高级编程语言,提供了多种并发编程的方式,其中多线程与多进程是最常见的两种方式之一。在本文中,我们将探讨Python中多线程与多进程的概念、区别以及如何使用线程池与
    的头像 发表于 10-23 11:48 306次阅读
    <b class='flag-5'>Python</b>中多线程和<b class='flag-5'>多进程</b>的区别

    python中5种线程锁盘点

    线程安全是多线程或多进程编程中的一个概念,在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。
    发表于 03-07 11:08 1477次阅读
    <b class='flag-5'>python</b>中5种线程锁盘点

    分别使用多线程多进程协程+paramiko在华为交换机批量快速进行配置

    python对于网络设备的操作属于I/O密集型,在脚本运行时,存在大量的等待时间。我们便可以利用这些空闲的时间,进行其他的操作。
    的头像 发表于 01-16 09:13 814次阅读
    分别使用多线程<b class='flag-5'>多进程</b>协程+paramiko在华为交换机批量快速进行配置

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

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

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

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

    python环境变量的配置pip

    开始,然后讨论如何找到Python的安装路径以及如何配置环境变量。接下来,我们将详细讲解pip的用途和安装方法,并解决一些与pip相关的常见问题。 一、环境变量的概念 环境变量是操作系统提供的一种机制,用于存储和传递一些全局的配置信息。每个进程
    的头像 发表于 12-15 15:41 2350次阅读

    python缩进错误怎么办

    缩进错误是Python编程中常见的错误之一,通常是由于代码块的缩进不正确导致的。Python是一种强制缩进的语言,代码块之间需要保持一致的缩进程度。 缩进错误主要有两种情况:缩进过多和缩进不足。下面
    的头像 发表于 11-29 16:43 2181次阅读

    python运行环境的安装和配置

    Python是一种非常流行的编程语言,广泛应用于科学计算、Web开发、人工智能等领域。为了能够正常运行Python程序,我们需要先安装和配置Python运行环境。本文将为您详尽介绍Python
    的头像 发表于 11-29 16:17 1098次阅读

    python软件对电脑配置要求

    Python是一种流行的编程语言,它在许多不同的领域中被广泛使用,例如网站开发、数据科学和机器学习等。对于使用Python的开发者来说,了解Python软件的电脑配置要求是非常重要的。本文将详细介绍
    的头像 发表于 11-29 14:58 9746次阅读

    python软件怎么运行代码

    Python是一种高级编程语言,它被广泛用于开发各种类型的应用程序,从简单的脚本到复杂的网络应用和机器学习模型。要运行Python代码,您需要一个Python解释器,它可以将您的代码翻译成计算机可以
    的头像 发表于 11-28 16:02 854次阅读

    如何运行Python程序

    运行Python程序非常简单。Python是一种解释型语言,这意味着可以直接通过解释器来执行代码。下面我将详细介绍如何运行Python程序。 一、安装Python 在运行
    的头像 发表于 11-24 09:31 1147次阅读

    python怎么运行程序

    Python是一种广泛使用的编程语言,它的简易和可读性使得它成为初学者和专业开发人员的首选。在运行Python程序之前,您需要安装Python解释器,然后按照以下步骤进行操作。 步骤1:安装
    的头像 发表于 11-24 09:25 2488次阅读

    Python2与Python3的差异

    Python2与Python3是两个不同的版本,它们在语法、功能和性能等方面存在一些差异。下面是对Python2和Python3的详尽、详实、细致的比较,分为以下几个方面: 语法差异:
    的头像 发表于 11-23 16:48 908次阅读

    python32位与62位区别

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