PYTHON多进程CPU利用率高,PYTHON多进程反而慢
Python · 2022年7月14日 · 338 次浏览
导读
很多时候,当我们需要使用Python来处理大量的数据的时候,为了缩短处理的时间,我们会使用多线程或多进程来并行处理任务。
由于Python全局解释器锁的存在,导致在执行多线程的时候实际上只有一个线程在运行,这使得多核CPU无法发挥它真正的效率。而多进程就可以很好地解决这个问题。如果你打开多进程的姿势不对,会导致它比单进程更慢,下面我们就来看看如何正确地打开多进程。
实验环境
系统:Ubuntu1604
Python:37
示例
这个示例是基于Python对做一个预处理
预处理

读取将转换为bytes数组

采用for循环处理批量
这里我们直接通过循环调用的预处理函数,其实也就是单进程。处理了1349张,一共花了将近10s。这里我为了方便就没有采用多次调用来取平均值了,如果大家想要计算得更加准确,可以采用取平均值。

采用进程池多进程处理

使用4个进程居然花了将近13s,按道理来说这不科学呀?4个进程的处理速度应该要快于单个进程,现在看来居然还更慢。也就是说,我们花了更多的硬件资源,居然还花费了更多的时间。这是为什么呢?
接下来看看,我们使用Queue来改进使用多进程对进行预处理

惊讶地发现,当我们将进程池改为根据进程的个数来分发任务时,居然速度要快将近一倍左右。
特别注意:这里其实使用多线程来处理会比多进程的速度更快,而且消耗的资源也要少点。举这个例子只是为了说明,影响多进程速度的原因。
影响进程速度的原因
进程池速度慢可能有下面几个原因:
CPU资源不足,开启更多的进程只会导致速度更慢
进程之间通信传输的数据量大
使用了Lock处理共享的数据
进程使用了大量的osfork()
在上面的例子中,其实影响多进程速度的主要原因是因为调用preprocess函数每次都会返回一个image array占用的内存比较大,如果你将返回值由image array改为一个字符串你会发现最终它们的速度会差不多。
那为什么使用Queue的速度会比进程池快那么多呢?这里主要也是因为进程池在保存数据与Queue的差异导致的。
虽然说,我们在使用进程池的时候采用的也是异步调用的方式。但是,进程池在接受返回结果的时候使用了selfwait(timeout),而进程池最终返回结果的顺序也和调用的时候保持一致。而Queue在保存数据的时候,会通过后台的线程来写数据,所以它最终保存的结果是乱序的,相对来说它的速度会更快点。
您好,Pyside是一个Python绑定Qt库的项目,它允许Python开发人员使用Qt框架创建图形用户界面(GUI)应用程序。Pyside项目由Digia公司开发并维护,但是自2015年起,Digia公司停止了对Pyside的维护和支持。
Pyside停止维护的原因是因为Digia公司决定将重心放在Qt的商业版本上,即Qt for Application Development。此外,Qt也有其他的Python绑定库,如PyQt和PySide2,这些库仍在活跃的维护和更新中。
虽然Pyside停止维护,但是它仍然可以使用,特别是对于那些已经使用Pyside开发了应用程序的开发人员来说,他们可以继续使用Pyside来维护和更新他们的应用程序。此外,Pyside的代码也是开源的,所以开发人员可以自行修改和更新代码以适应新的需求和环境。
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。像Perl语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
简介:
Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。
Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
Python(发音:英[ˈpaɪθən],美[ˈpaɪθɑ:n]),是一种易学且功能强大的编程语言。
这种语言的名字(Python意为“蟒蛇”)来自于BBC节目“Monty Python的飞行马戏团”,而与爬行动物没有关系。在文档中用Monty Python来开玩笑不只是可以的,还是可以推荐的!
Python具有高级有效的数据结构和简单有效的面向对象编程。
Python优雅的语法和动态类型,加上它的解释性,使它成为很多编程平台开放开源和快速开发应用的理想语言。
Python 解释器及丰富的标准库以源码或机器码的形式提供,可以到 Python 官网 >
运行python程序的两种方式是什么?python有两种运行方式:交互式和脚本式。交互式可以通过cmd命令行窗口或者IDEL实现,而脚本式通过写一个脚本(py结尾的文档)实现。其中交互式主要用于简单的python运行或者测试调试python时用到,而脚本式是运行python程序的主要方法。
第一,交互式,通过Windows命令行工具进行交互式运行python。同时按下Windows键和R键,启动“运行”,在“运行”中输入cmd然后回车,即d出命令行工具,然后输入python回车,即出现如下界面。
第二,然后输入print('Helloworld!'),既可以敲一行代码,与python交互一次,python执行一次。
第三,通过IDEL交互式运行python。从“开始”中找到Python->IDEL,如下图。
第四,启动IDEL后,同样输入print('Helloworld!'),既可以敲一行代码,与python交互一次,python执行一次。只不过IEDL中python代码可以高亮显示。
第五,脚本式运行python,在IDEL中点击file->newfile,就会d出一个未命名(Untitled)的脚本窗口,然后输入如下代码,并按Ctrl+S保存。
#20181216摄氏温度和华氏温度之间转换
t=input('请输入带有单位符号的温度(例如37C或者100F):')
ift[-1]in('f','F'):
C=(eval(t[:-1])-32)/18 #如果输入为华氏温度,那么转换为摄氏温度
print('转变为摄氏温度%2fC为:'%C)
elift[-1]in('c','C'):
F=eval(t[:-1])18+32 #如果输入为摄氏温度,那么转换为华氏温度
print('转变为华氏温度%2fF为:'%F)
else:
print('输入格式有误,请输入带有单位符号的温度(例如37C或者100F):')
第六,按F5运行上一步保存的py脚本,就会出现如下界面,提示:请输入带有单位符号的温度(例如37C或者100F),随便输入一下就行,即通过脚本运行了python。
那么,有关运行python程序的两种方式的内容,小编就介绍到这里了。小伙伴们可以用心了解一下哦!
本篇文章使用以下硬件型号:联想小新Air15;系统版本:win10;软件版本:python30。
当然!
1、人才需求
过去五年里,呈现爆发性增长的趋势。目前Python人才缺口高达80万,人才市场早已供不应求。在发布的职位说明中,Python技能需求增速达到174%,居于首位。
从招聘网站每日招聘量来看,Python人才缺口巨大,也反映出需求量的不断增长,目前Python依然是招聘市场很火热的岗位。
2、政策支持
从国家的角度来看,在国务院发布的《新一代人工智能发展规划》中,就已经明确将人工智能正式纳入国家发展战略。在教育上,教育部已将人工智能、物联网、大数据处理等技能,划入到高中的新课标。而在浙江省、北京市、山东省等几个省份,甚至已经将Python纳入高考内容体系。同时,全国计算机二级考试也新增Python语言程序设计科目。这意味着现在小学生都要开始学Python了。
3、Python广泛应用
目前Python的应用特别广泛,国内外众多企业,尤其是知名大型企业,现在都在使用Python作为最关键的开发语言,如谷歌、NASA、YouTube、Facebook、百度、阿里、网易、新浪、搜狐等等。市场有需求,企业有需要,因此未来Python的就业前景一定不会差。
4、薪资待遇可观
薪资待遇是大家最关心的问题。根据相关数据统计,在一线城市北京,Python开发工程师平均工资是每月两万左右,从业五年以上的开发者平均薪资更是高达两万五以上。而在成都383%的Python从业人员薪资待遇都在一两万左右,所以学Python工资也十分可观。
Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。
Python标准库的主要功能有:
文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能。
文件处理,包含文件 *** 作、创建临时文件、文件压缩与归档、 *** 作配置文件等功能。
*** 作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、日志等功能
网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能。
网络协议,支持>
参考:知乎
Python 常用的标准库以及第三方库
standard libs:
itertools
functools 学好python有必要掌握上面这两个库吧,
re 正则
subprocess 调用shell命令的神器
pdb 调试
traceback 调试
pprint 漂亮的输出
logging 日志
threading和multiprocessing 多线程
urllib/urllib2/>
以上就是关于python运行多线程程序会影响电脑硬件么全部的内容,包括:python运行多线程程序会影响电脑硬件么、pyside停止维护、python是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)