首页 / 知识
python为啥运行效率不高
2023-11-12 13:28:00
python运算效率低,具体是什么原因呢,下列罗列一些:
原因:1、python是动态语言;2、python是解释执行,但是不支持JIT;3、python中一切都是对象,每个对象都需要维护引用计数,增加了额外的工作。4、pythonGIL;5、垃圾回收。
第一:python是动态语言
一个变量所指向对象的类型在运行时才确定,编译器做不了任何预测,也就无从优化。举一个简单的例子:r=a+b。a和b相加,但a和b的类型在运行时才知道,对于加法操作,不同的类型有不同的处理,所以每次运行的时候都会去判断a和b的类型,然后执行对应的操作。而在静态语言如C++中,编译的时候就确定了运行时的代码。
另外一个例子是属性查找,关于具体的查找顺序在《python属性查找》中有详细介绍。简而言之,访问对象的某个属性是一个非常复杂的过程,而且通过同一个变量访问到的python对象还都可能不一样(参见Lazyproperty的例子)。而在C语言中,访问属性用对象的地址加上属性的偏移就可以了。
第二:python是解释执行,但是不支持JIT(justintimecompiler)。虽然大名鼎鼎的google曾经尝试UnladenSwallow这个项目,但最终也折了。
第三:python中一切都是对象,每个对象都需要维护引用计数,增加了额外的工作。
第四:pythonGIL,GIL是Python最为诟病的一点,因为GIL,python中的多线程并不能真正的并发。如果是在IObound的业务场景,这个问题并不大,但是在CPUBOUND的场景,这就很致命了。所以笔者在工作中使用python多线程的情况并不多,一般都是使用多进程(prefork),或者在加上协程。即使在单线程,GIL也会带来很大的性能影响,因为python每执行100个opcode(默认,可以通过sys.setcheckinterval()设置)就会尝试线程的切换,具体的源代码在ceval.c::PyEval_EvalFrameEx。
第五:垃圾回收,这个可能是所有具有垃圾回收的编程语言的通病。python采用标记和分代的垃圾回收策略,每次垃圾回收的时候都会中断正在执行的程序,造成所谓的顿卡。infoq上有一篇文章,提到禁用Python的GC机制后,Instagram性能提升了10%。感兴趣的读者可以去细读。
以上内容为大家介绍了Python增强,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们
最新内容
相关内容
For循环如何在Python中工作
For循环如何在Python中工作,工作,项目,代码,培训,流程,示例,序列,语句,语法,实际,Python的for循环通过遍历数组的序列来工作。从本质上讲,它在为什么开发人员喜欢在机器学习和人
为什么开发人员喜欢在机器学习和人工智能项目中使用Python?,代码,项目,数据,人工智能,平台,异常,增长,灵活,时间,工具,1.Python是灵活的Pytho为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规如何提速优化python代码?
如何提速优化python代码?,代码,时间,数据,新增,写法,包装,情况,下来,面临,工作,Python是一种脚本语言,相比C/C++这样的编译语言,在效率和性能方学习Python可以做这些工作
学习Python可以做这些工作,网络,数据,工作,网站,技术,培训,行业,发展,人工智能,分析,Python语言非常受欢迎,随着互联网的快速发展,很多不是计算python的十个第三方库
python的十个第三方库,数据,网络,服务,时间,代码,管理,标准,实时,分析,等级,1.BeautifulSoupBeautifulSoup是一个可以从HTML,XML进行提取文件用于业余项目的优秀 Python 库
用于业余项目的优秀 Python 库,数据,工具,项目,信息,培训,系统,地图,下来,工作,管理,1.在数据库中即时保存数据:Dataset当我们想要在不知道最Python爬虫学到什么程度可以找工作
Python爬虫学到什么程度可以找工作,技术,项目,网站,网上,下来,系统,公司,数据,占比,工具,有同学在群里和大家讨论,问的最多的问题就是,python爬如何让Python代码更易维护
如何让Python代码更易维护,代码,项目,标准,工具,质量,地方,一致,更正,培训,控制权,检查你的代码的质量,通过这些外部库使其更易维护。可读性很python阅读代码有助于养成优秀的代
python阅读代码有助于养成优秀的代码风格,代码,培训,统一,项目,名字,风格,注释,可读性,顾名思义,成份,“优秀的代码不需要文档”,这句话虽然说Python代码统计工具
Python代码统计工具,代码,工具,注释,培训,分析,字符串,引号,脚本,语句,语言,此前实现的C代码统计工具仅能分析和统计C语言代码文件,但其设计思python阅读代码提高编码能力
python阅读代码提高编码能力,代码,概念,培训,资料,能力,时候,实例,进程,技巧,方法,在python中阅读源代码也是提高编码能力的一种途径,就像临摹