Python运行效率低的原因有哪些

Python039

Python运行效率低的原因有哪些,第1张

1.Python是动态语言

动态语言是一类在运行时可以改变其结构的语言,如新的函数、对象、代码可以被引入,已有的函数可以被删除或其他结构上的变化等,该类语言更具有活性,但是不可避免的因为运行时的不确定性也影响运行效率

2.Python是解释执行

相比于C语言编译性语言编写的程序,Python是解释执行语言,其运行过程是Python运行文件程序时,Python解释器将源代码转换为字节码,然后再由Python解释器来执行这些字节码。其每次运行都要进行转换成字节码,然后再由虚拟机把字节码转换成机器语言,最后才能在硬件上运行,与编译性语言相比,其过程更复杂,性能肯定会受影响。

3.Python中一切都是对象

Python是一门面向对象的编程语言,其设计理念是一切皆是对象,如数字、字符串、元组、列表、字典、函数、方法、类、模块等都是对象,包括代码,每个对象都需要维护引用计数,因此,增加了额外工作,影响了性能。

4.Python GIL

GIL是Python最为诟病的一点,因为GIL,Python中的多线程并不能真正的并发,即使在单线程,GIL也会带来很大的性能影响,因为python每执行100个opcode就会尝试线程的切换,因此,影响Python运行效率。

5.垃圾回收

Python采用标记和分代的垃圾回收策略,每次垃圾回收的时候都会中断正在执行的程序,造成所谓的顿卡,影响运行效率。

python可以处理大数据,python处理大数据不一定是最优的选择。适合大数据处理。而不是大数据量处理。 如果大数据量处理,需要采用并用结构,比如在hadoop上使用python,或者是自己做的分布式处理框架。

python的优势不在于运行效率,而在于开发效率和高可维护性。针对特定的问题挑选合适的工具,本身也是一项技术能力。

Python处理数据的优势(不是处理大数据):

1. 异常快捷的开发速度,代码量巨少

2. 丰富的数据处理包,不管正则也好,html解析啦,xml解析啦,用起来非常方便

3. 内部类型使用成本巨低,不需要额外怎么操作(java,c++用个map都很费劲)

4. 公司中,很大量的数据处理工作工作是不需要面对非常大的数据的

5. 巨大的数据不是语言所能解决的,需要处理数据的框架(hadoop, mpi)虽然小众,但是python还是有处理大数据的框架的,或者一些框架也支持python。

扩展资料:

Python处理数据缺点:

Python处理大数据的劣势:

1、python线程有gil,通俗说就是多线程的时候只能在一个核上跑,浪费了多核服务器。在一种常见的场景下是要命的:并发单元之间有巨大的数据共享或者共用(例如大dict)。

多进程会导致内存吃紧,多线程则解决不了数据共享的问题,单独的写一个进程之间负责维护读写这个数据不仅效率不高而且麻烦

2、python执行效率不高,在处理大数据的时候,效率不高,这是真的,pypy(一个jit的python解释器,可以理解成脚本语言加速执行的东西)能够提高很大的速度,但是pypy不支持很多python经典的包,例如numpy。

3. 绝大部分的大公司,用java处理大数据不管是环境也好,积累也好,都会好很多。

参考资料来源:百度百科-Python