内容简介:谷歌发布新项目,旨在将Python代码编译为Go
【51CTO.com快译】Python很可能遭遇另一位强劲的编程语言对手: 谷歌Go 。
作为一项实验性项目,谷歌公司的Grumpy能够将 Python 代码转换为 Go 形式,这意味着Python程序将能够在编译后利用Go工具链作为静态二进制文件运行。其对Python的转换相当于创建了一款Go应用。
在一篇开源发布博文中,谷歌公司指出,该项目能够加快其Python开发型YouTube前端的升级工作。谷歌公司在此前的工作也遇到了Python用户的普遍困扰:很难利用CPython——以 C语言 编写的默认Python解释器——进行有效扩展。
谷歌公司表示,“我们认为Grumpy拥有远超CPython的实际工作负载扩展潜力。”
以小失换大得
尽管Grumpy需要通过Go工具链将Python代码转换为静态二进制文件,但这并不会给其运行速度带来多少影响。毕竟已经存在众多将Python编译为二进制形式的项目,考虑到Python本身的动态类型系统特性,其很难通过这种方式实现提速。举例来说,Cython只有在开发者提供静态C类型信息时才能实现加速。
根据谷歌的说法,Grumpy能够通过消除部分CPython遗留负担加速Python代码。其中提速效果最明显的是刻意舍弃对C扩展模块的支持以换取速度提升。目前存在着大量使用C扩展模块的资源库,其中相当一部分来自Python标准库(例如用于同C代码对接的ctypes)。
由于不再支持C扩展,Grumpy并不具备CPython的全局解释器锁(Global Interpreter Lock),而这通常被视为顺利实现Python并发负载运行的最大障碍。Grumpy还将使用Go的垃圾回收机制进行内存管理,而不再沿用CPython的类似机制。
Grumpy允许导入Go软件包并配合与Go模块同样的语法加以使用,从而在Python与GO之间建立起紧密的互操作性。这不禁让人联想到pythonnet项目,其允许Python与.Net程序集实现互操作性。
缺失部分
Go及其 工具 链目前已经被众多第三方用于开发新型语言。其中Have项目利用Go作为转换目标,而Oden项目则利用Go工具链在Haskell或者Lisp当中创建一种新的函数性语言。Oden项目已经于去年年底停止开发,不过Have项目则仍在积极推进当中。
利用Grumpy,Go的工具链将有助于帮助庞大的Python用户社区解决诸多现实难题。虽然谷歌公司的实际使用效果应该更好,毕竟Grumpy是专门针对其需求打造的项目,但我们也相信广泛Python社区同样将借此解除或者应对诸多既有障碍。不过,这一切都要视Grumpy项目的实际发展状况而定。
举例来说,Grumpy仅支持Python的早期Python 2.x语法,另外亦有众多标准库未完成移植,exec或eval这样的函数也尚无法正常使用。
而最重要的缺失部分并非对C扩展本身的支持,而是依赖于C扩展的各类资源库。失去了C扩展,意味着只有最为普通的Python脚本才能编译并运行在Grumpy的当前互操作机制之下。虽然谷歌方面也可以利用Go语言编写出相关替代方案,但其中某些大型Python库——例如NumPy——将完全不可用,而此类库正是Python整体生态系统中的重要组成部分。
原文标题:Google boosts Python by turning it into Go
原文作者:Serdar Yegulalp
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】
了解更多热点新闻,请关注51CTO《科技新闻早报》栏目!
【责任编辑:张诚 TEL:(010)68476606】
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 谷歌发布新项目,旨在将Python代码编译为Go
- 接了个新项目
- 用cookiecutter来创建新项目
- 实战第四步:新项目之十大输出产物
- Android Studio 0.2.9和新项目
- 快速接手新项目技巧:使用Runtime找到UIImage名字
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解LINUX网络技术内幕
Christian Benvenuti / 夏安、闫江毓、黄景昌 / 中国电力出版社 / 2009-6 / 128.00元
Linux如此的流行正是得益于它的特性丰富及有效的网络协议栈。如果你曾经惊叹于Linux能够实现如此复杂的工作,或者你只是想通过现实中的例子学习现代网络,《深入理解Linux网络内幕》将会给你指导。同其他O'Reilly的流行书籍一样,《深入理解Linux网络内幕》清楚地阐述了网络的基本概念,并指导你如何用C语言实现。虽然早先的 TCP/IP经验是有用的,但初学者通过《深入理解Linux网络内幕》......一起来看看 《深入理解LINUX网络技术内幕》 这本书的介绍吧!