Grumpy:Google 用 Go 开发的 Python 运行时

编辑:光环大数据 来源: 互联网 时间: 2017-10-20 10:21 阅读:

  Grumpy:Google用Go开发的Python运行时,Google运行着大量的Python代码,youtube.com的前端服务器是Python写的,YouTube的API主要也是Python写的。到了YouTube的量级,性能非常重要。YouTube的前端主要依赖CPython2.7,所以Google花费了大量精力来优化运行时,并调整应用,以获得最好的性能。

了解CPython的读者应该都知道,GIL(GlobalInterpreterLock)的存在,制约了Python应用的并发能力。

调研了很多其他Python运行时,并没有哪种方案能够在不引入新问题的前提下解决并发问题。

Google的工程师开始思考一个问题,是不是可以开发一个针对实时服务进行优化的新运行时呢?

Grumpy应运而生了。

Grumpy是一个实验性的Python运行时。它将Python代码翻译成Go程序,转译(transpiled)得到的程序可以与Go运行时无缝集成。

因为Google目前有大量的Python代码,所以高度兼容CPython就非常重要。

Grumpy有两个重要的设计选择。

首先,不支持C扩展模块。虽然代价是无法利用现有的大量PythonC扩展,但是优势很明显,就是可以灵活地针对并行负载设计API和对象表示。而且Grumpy去掉了GIL,这就可以利用Go的垃圾收集来管理对象生命周期,而不再是依赖引用计数。

其次,Grumpy不是解释器。Grumpy程序和其他任何Go程序一样编译、链接。尽管牺牲了开发和部署的灵活性,但是静态编译时可以进行更多优化。和Go代码的互操作也非常强大。Grumpy程序可以像导入Python模块那样导入Go包。不支持exec、eval和compile等动态特性,Google的产品中不会使用这些特性,所以这也是可以接受的。

按功能分,Grumpy可以分为grumpc、Grump运行时和Grumpy标准库三块。其中grumpc负责将Python程序转换为Go程序。解析Python代码,生成Go代码。它是用Python实现的。

只支持Python2.7,社区有很多吐槽,不过Google的很多代码还是以该版本为主,也是可以理解的。

Grumpy还在开发之中,感兴趣的读者可以在GitHub上查阅相关代码。

  Python培训,就选光环大数据Python培训机构python学习地址:http://hadoop.aura.cn/python/


大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();