python系列教程11

网友投稿 258 2022-11-06


python系列教程11

CPython、Jython和IronPython都是通过同样的方式实现Python语言的,即通过把源代码编译为字节码,然后在适合的虚拟机上执行这些字节码。然而,其他的系统,包括Psyco即时编译器以及Shedskin C++转换器,则试着优化了基本执行模块。这些系统并不是现阶段学习Python所必备知识,但是简要地了解这些执行模块可以帮助你更轻松地掌握这些模块。

Psyco实时编译器

Psyco系统并不是Python的另一种实现方式,而是一个扩展字节码执行模块的组件,可以让程序运行得更快。Psyco是一个PVM的增强工具,这个工具收集并使用信息,在程序运行时,可以将部分程序的字节码转换成底层的真正的二进制机器代码,从而实现更快的执行速度。在开发的过程中,Psyco无需代码的修改或独立的编译步骤即可完成这一转换。

概括地讲,当程序运行时,Psyco收集了正在传递过程中的对象的类别信息,这些信息可以用来裁剪对象的类型,从而生成高效的机器代码。机器代码一旦生成后,就替代了对应的原始字节码,从而加快程序的整体执行速度。实际的效果就是,通过使用Psyco,使程序在整个运行过程中执行得更快。在理想的情况下,一些通过Psyco优化的Python代码的执行速度可以像编译好的C代码一样快。

因为字节码的转换与程序运行同时发生,所以Pysco往往被看做是一个即时编译器(JIT)。Pysco实际上与一些读者曾经在Java语言中了解的JIT编译器稍有不同。实际上,Psyco是一个专有的JIT编译器:它生成机器代码将数据类型精简至你程序实际上所使用的类型。例如,如果程序的一部分在不同的时候采用了不同的数据类型,Psyco可以生成不同版本的机器码用来支持每一个不同的类型组合。

Psyco已经证实能够大大提高Python代码的速度。根据其官方网站介绍,Psyco提供了“2倍至100倍的速度提升,典型值为4x,在没有改进的Python解释器和不修改的源代码基础上,仅仅依靠动态可加载的C扩展模块”。同等重要的是,最显著的提速是在以纯Python写成的算法代码上实现的。确切地讲,是那些为了优化往往需要迁移到C的那部分代码。使用了Psyco后,这样的迁移甚至没有必要了。

Psyco目前还不是标准Python的一部分,你也许需要单独获取并安装它。而且它仍是一个研究项目,所以需要在网上跟踪它的发展。事实上,尽管目前Psyco本身仍可以获得并能够自动安装,但这个系统的大部分似乎最终将会被一个更新的项目“PyPy”(一个尝试用Python代码实现Python PVM的项目,能够像Psyco一样提供更好的优化)融合。

也许Psyco的最大缺点就是它实际上只能够为Intel x86构架的芯片生成机器代码,尽管包括了Windows、Linux以及最新的Mac。

Shedskin C++转换器

Shedskin是一个引擎系统,它采用了一种不同的Python程序执行方法:它尝试将Python代码变为C++代码,然后使用机器中的C++编译器将得到的C++代码编译为机器代码。正是如此,它以一种平台无关的方式来运行Python代码。目前Shedskin仍是一个实验性质的项目,并且它给Python程序施加了一种隐晦的静态类型约束,而这在一般的Python代码中是不常见的,所以我们不再深入了解其中的一些细节了。

不过初步结果显示它具有比标准Python代码以及使用Psyco扩展后的执行速度更快的潜质,并且它是一个前途光明的项目。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python系列教程4
下一篇:道路运输从业资格证查询API(道路运输从业资格证查询app下载)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~