谷歌发布新项目,旨在将Python代码编译为Go

译文
新闻
尽管Grumpy需要通过Go工具链将Python代码转换为静态二进制文件,但这并不会给其运行速度带来多少影响。毕竟已经存在众多将Python编译为二进制形式的项目,考虑到Python本身的动态类型系统特性,其很难通过这种方式实现提速。

  【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《科技新闻早报》栏目!

责任编辑:张诚 来源: 51CTO
相关推荐

2011-04-30 16:18:49

AndroidGoogle TV智能电视

2023-10-27 10:16:17

前端项目Rust

2014-06-23 09:49:32

Go语言Android谷歌

2012-03-15 14:25:22

Go

2019-12-06 13:59:37

代码开发Python

2012-03-30 14:15:50

GoogleGo

2011-10-21 09:24:13

谷歌Android 4.0源代码

2019-10-14 08:00:00

Go语言编程语言开源项目

2009-03-30 14:12:38

LinuxUnladenSwallow

2012-09-21 10:30:58

谷歌iOS 6Google云地图

2011-03-30 08:57:36

Android 3.1谷歌

2009-12-11 10:00:30

谷歌Chrome插件库

2023-08-10 08:38:57

Project IDFlutter谷歌

2014-12-02 09:45:21

Android 5.0Google

2009-12-08 17:56:51

2013-04-11 09:43:15

Android创建项目Android开发

2011-06-21 14:46:44

Hibernate

2020-07-21 08:10:01

代码项目打包

2011-12-27 09:40:25

谷歌Android培训
点赞
收藏

51CTO技术栈公众号