快捷搜索:  汽车  科技

是我孤陋寡闻了下一句(是你孤陋寡闻了)

是我孤陋寡闻了下一句(是你孤陋寡闻了)是一个Python的替代品,它可以将Python代码转换为C 代码,然后编译为可执行文件,并且通过调用Python的API的方式实现从解析语言到编译语言的转换,在转换到C 的过程中直接使用python的解释器,可以保证100%的语法兼容。Pyston,由Dropbox资助,使用LLVM编译器架构来加速Python,同样的它也使用了适时编译。相比于PyPy,Pyston还处于早期阶段,它只支持Python的部分特性。Pyston把工作分成两个部分,一部分是语言的核心特性,另一部分是把性能提升到可接受的程度。Pyston距离可以在生产环境使用还有一段距离下面是五种已有的方案,帮助你提高Python的性能。是Python的C语言扩展,cPython是一门单独的语言,专门用来写在Python里面的import用的扩展库。CPython跟Python语法基本一致,而CPython有专门的编译器。

python运行速度慢?是你孤陋寡闻了?5个优化方案提速百分百

是我孤陋寡闻了下一句(是你孤陋寡闻了)(1)

北漂编程2021-04-23 21:47

速度慢

是我孤陋寡闻了下一句(是你孤陋寡闻了)(2)

Python之所以速度慢,主要是由于动态性和多功能性。

Python 的运行过程是虚拟机读入 Python 代码(文本),词法分析,编译成虚拟机认识的 opcode,然后虚拟机解释 opcode 执行。但这其实不是最主要的原因,Python import 之后会缓存编译后的 opcode,所以读入、词法分析和编译并没有占用太多的时间。

那么真正的慢的是哪一步分呢?就是后面的虚拟机解释 opcode 执行的部分。前期的编译是将 Python 代码编译成解释器可以理解的中间代码,解释器再将中间代码翻译成 CPU 可以理解的指令。相比于 AOT(提前编译型语言,比如C)直接编译成机器码,肯定是慢的。

是我孤陋寡闻了下一句(是你孤陋寡闻了)(3)

下面是五种已有的方案,帮助你提高Python的性能。

Cython

是Python的C语言扩展,cPython是一门单独的语言,专门用来写在Python里面的import用的扩展库。CPython跟Python语法基本一致,而CPython有专门的编译器。

是我孤陋寡闻了下一句(是你孤陋寡闻了)(4)

据说,Cython提供了一些特性来让代码更高效,比如变量类型化,这本质上是C要求的。一些科学计算的包,如scikit-learn依赖Cython的一些特性来保持操作简洁快速。

Pyston

Pyston,由Dropbox资助,使用LLVM编译器架构来加速Python,同样的它也使用了适时编译。相比于PyPy,Pyston还处于早期阶段,它只支持Python的部分特性。Pyston把工作分成两个部分,一部分是语言的核心特性,另一部分是把性能提升到可接受的程度。Pyston距离可以在生产环境使用还有一段距离

是我孤陋寡闻了下一句(是你孤陋寡闻了)(5)

Nuitka

是一个Python的替代品,它可以将Python代码转换为C 代码,然后编译为可执行文件,并且通过调用Python的API的方式实现从解析语言到编译语言的转换,在转换到C 的过程中直接使用python的解释器,可以保证100%的语法兼容。

是我孤陋寡闻了下一句(是你孤陋寡闻了)(6)

Numba

Numba结合了上面几个项目的想法。学习了Cython,Numba也采用了部分加速的策略,只加速CPU密集型的任务;同时它又学习了PyPy和Pyston,通过LLVM运行Python。你可以用一个装饰器指定你要用Numba编译的函数,Numba继承Numpy来加速函数的执行,Numba不做适时编译,它的代码是预先编译的。

是我孤陋寡闻了下一句(是你孤陋寡闻了)(7)

PyPy

在选择CPython的简易替代语言时,pypy无疑时最佳之选,与现有Python代码保持高度兼容性,pypy也是默认程序运行时的一个很好选择。PyPy使用了Just-in-Time即时编译器,动态编译器与静态编译器不同,利用程序运行的过程的数据进行优化。

是我孤陋寡闻了下一句(是你孤陋寡闻了)(8)

PyPy使用适时编译来加速Python,这项技术Google也在使用,Google在V8引擎中使用它加速Javascript。最近的版本PyPy2.5增加了一些提升性能的特性,其中有一项很受欢迎,它集成了Numpy,Numpy之前也一直被用来加速Python的运行。

结语

Python之父说:大部分觉得Python慢的应用都是没有正确地使用Python。对于CPU密集型的任务有多种方法来提升性能--使用Numpy来做计算,调用外部C代码,以及尽量避免GIL锁。由于GIL锁目前还无法被替代,

彩蛋!!!需要下面的资料的,还有更多课件资源的,请私信我“666”领取!!!私信我还有更多惊喜哦!!!

是我孤陋寡闻了下一句(是你孤陋寡闻了)(9)

是我孤陋寡闻了下一句(是你孤陋寡闻了)(10)

是我孤陋寡闻了下一句(是你孤陋寡闻了)(11)

猜您喜欢: