|
|
|
|
移动端

1.6.5 PyPy

《Python高级编程(第2版)》第1章Python现状,本章将会向读者介绍一下Python 3的当前现状,同时介绍Python的现代开发方法。本节为大家介绍PyPy。

作者:张亮/阿信 译来源:人民邮电出版社|2018-01-29 17:52

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


1.6.5 PyPy

PyPy可能是最令人兴奋的Python实现,因为其目标就是将Python重写为Python。在PyPy中,Python解释器本身是用Python编写的。在Python的CPython实现中,有一个C代码层来实现具体细节。但在PyPy实现中,这个C代码层用Python完全重写。

这样你可以在代码运行期间改变解释器的行为,并实现CPython难以实现的代码模式。

目前PyPy的目的是与Python 2.7完全兼容,而PyPy3则与Python 3.2.5版兼容。

以前对PyPy感兴趣主要是理论上的原因,只有喜欢深入钻研语言细节的人才会对它感兴趣。它通常不用于生产环境,但这些年来这种状况已经发生改变。现在许多基准测试给出惊人的结果,PyPy通常比CPython实现要快得多。这个项目有自己的基准测试网站,记录了用数十种不同的基准测试对每一版本性能的测量结果(参见http://speed.pypy.org/)。网站清晰地显示,启用JIT的PyPy至少比CPython要快好几倍。由于PyPy的这一特性以及其他特性,使得越来越多的开发人员决定在生产环境中切换到PyPy。

PyPy与CPython实现的主要区别在于以下几个方面。

使用垃圾回收,而不是引用计数。

集成跟踪JIT编译器,可以显著提高性能。

借鉴了Stackless Python在应用层的无栈特性。

与几乎所有其他的Python实现类似,PyPy也缺乏对C/Python扩展API的完全官方支持。但它至少通过CPyExt子系统为C扩展提供了某种程度的支持,虽然文档不完整,功能也尚未完善。此外,社区正在努力将NumPy迁移到PyPy中,因为这是最需要的功能。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

《广域网》

在开始学习WAN资料时,我经常面对资料深度不够或者为电气工程师编写的书。另外,在看了几本书,并且对Internet进行了研究以后,我觉得应当...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊