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

    文章

    11320

    浏览量

    225832
  • python
    +关注

    关注

    58

    文章

    4882

    浏览量

    90289
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用PYTHON进行的跨平台仿真

    如何使用编程语言Python来调用和控制VirtualLab Fusion中的模拟。请查看下面链接的文档,以找到关于如何设置和使用Python和VirtualLab Fusion之间的接口的详细指南,以及一个
    发表于 04-02 08:21

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    摘要 VirtualLab Fusion允许Python外部访问其建模技术、求解器和结果。这个用例介绍了一种使用路径变量和Visual Studio代码将Python连接到VirtualLab
    发表于 03-31 09:39

    飞凌嵌入式ElfBoard-进程进程状态

    运行多个用户的多个程序,就必然会产生多进程,而每个进程会有不同的状态。Linux 的进程通常有以下 6 种状态。⚫R (Running/Ready):进程处于运行态或就绪状态,只有在该
    发表于 03-27 09:12

    飞凌嵌入式ElfBoard-进程的相关信息之父进程和子进程

    进程在创建时,创建进程是新进程的父进程,新进程是创建进程的子
    发表于 03-12 17:12

    飞凌嵌入式ElfBoard-进程之什么是进程

    在Linux系统中,有些基本命令能够查看到进程的信息。例如ps、top、pgrep、pstree等;这些命令为用户提供了查看和管理Linux进程信息的多种功能。通过合理使用这些命令,用户可以监控
    发表于 03-02 08:49

    飞凌嵌入式ElfBoard-进程之什么是进程

    进程是正在执行(已经开始执行但还没终止的)的程序实例,执行程序时,内核会将程序载入虚拟内存,为程序变量分配空间,建立内核记账(bookkeeping)数据结构,以记录与进程有关的各种信息(比如,进程
    发表于 01-26 08:42

    进程概念和特征

    进程的概念   在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程(Process)的概念,以便更好地描述和控制程序的并发执行,实现操作系统
    发表于 01-15 06:39

    进程通信

    进程通信是指进程之间的信息交换。PV操作是低级通信方式,髙级通信方式是指以较高的效率传输大量数据的通信方式。高级通信方法主要有以下三个类。   共享存储   在通信的进程之间存在一块可直接
    发表于 01-15 06:16

    进程的控制

    进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。在操作系统中,一般把
    发表于 01-15 06:05

    解析Linux的进程、线程和协程

    一、基础概念 进程(Process) 进程是计算机中运行的程序的实例,它是操作系统中最基本的执行单元之一。每个进程都有自己的独立内存空间、系统资源和代码执行流。这意味着一个进程的崩
    发表于 12-22 11:00

    没有专利的opencv-python 版本

    所有 官方发布的 opencv-python 核心版本(无 contrib 扩展)都无专利风险——专利问题仅存在于 opencv-contrib-python 扩展模块中的少数算法(如早期 SIFT
    发表于 12-13 12:37

    termux如何搭建python游戏

    termux如何搭建python游戏 Termux搭建Python游戏开发环境的完整指南 一、Termux基础环境准备 Termux是一款无需root即可在安卓设备上运行的Linux终端
    发表于 08-29 07:06

    python app不能运行怎么解决?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    发表于 08-06 06:27

    恒讯科技深度解析:阿帕奇服务器工作原理

    阿帕奇服务器(Apache HTTP Server)作为全球使用最广泛的开源Web服务器软件,其工作原理融合了多进程架构、模块化设计与高效的请求处理流程。以下从核心机制、运行模式及优化策略三方面解析
    的头像 发表于 05-22 09:37 2096次阅读

    Linux系统进程管理入门指南

    在 Linux 系统中,进程是正在运行的程序的实例。理解进程的管理、查看和控制对于系统管理员和开发者来说非常重要
    的头像 发表于 04-22 14:34 1297次阅读
    Linux系统<b class='flag-5'>进程</b>管理入门指南