写点什么

谷歌使用 Grumpy 解决 CPython 的并发问题

  • 2017 年 1 月 17 日
  • 本文字数:903 字

    阅读完需:约 3 分钟

谷歌通过使用 Go 语言创建了一个新的 Python 运行时,解决了 CPython 中全局解释器锁(Global Interpreter Lock)导致的并发局限。

谷歌的YouTube 前端和API 使用Python 开发,运行在CPython 2.7 之上,CPython 2.7 是Python 解释器的参考实现。这些年来,Python 代码已经增长到数百万行了,在经过对运行时进行性能调整之后一般表现良好。但是他们碰到了一个再三出现的问题。据谷歌透露:“并发负载在CPython 上的表现并不好。”

在研究了许多其他可能的解决方案后,谷歌决定尝试在Go 的运行时上面运行Python 代码,因为它对并发性的强大支持。于是 Grumpy 项目诞生了。Grumpy 可以将 Python 代码转换为 Go 源代码,然后将其编译为目标平台的本地代码。Go 中间代码是一系列应用在 Python 对象数据结构上的操作。

因为它使用了编译,Grumpy 牺牲了解释型语言所具有的一些的开发自由度和特性。但谷歌声称,静态分析带来了性能上的优化,通过简单的导入就可以使用 Go 的包,这两项好处弥补了上述的不足。

静态编译的另一个结果是 Grumpy 不支持并且将“可能永远不支持”CPython 中可用的一些动态功能:execevalcompile,因为支持它们将需要“使用笨重而低效的编译工具链构建 Grumpy 程序”。虽然理论上可能,但是 Grumpy 团队表示,他们也不打算支持 C 扩展模块,因为“Grumpy 的 API 和对象布局与 CPython 不同”。

Google 试图用 Grumpy 替代 CPython 2.7。有些人希望看到Grumpy 在未来支持Python 3.x。在回答有关支持Python 3 的问题时,YouTube 的高级软件工程师Dylan Trotter 说:“我们有一个大的Python 2.7 代码库,所以这是我们一直关注的。我肯定想支持Python 3。”他还在另一个帖子中说,“近期没有Python 3 的具体计划,但长期来说我肯定想要支持它。”

Google 基于 Apache 2.0 许可在GitHub 上开源Grumpy ,邀请开发人员评论和贡献。 还为此设立了一个论坛

查看英文原文: Google Solves CPython’s Concurrency Issues with Grumpy


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 1 月 17 日 18:002484
用户头像

发布了 33 篇内容, 共 92050 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

week1 架构方法总结

zero2onemore

架构师第一周

Geek_Gu

极客大学架构师训练营

架构师训练营学习笔记

Erwa

第一周命题作业

王建军

第一周学习总结

饭桶

独孤求败的五把剑,三个人生阶段 -Week1- 学习总结

小粽

极客时间-架构师一期-第一周作业

_

极客时间 架构师 极客大学架构师训练营 第一周命题作业

week-1-part1 食堂就餐卡系统设计

陈龙

极客大学架构师训练营

ARTS Week17

时之虫

就餐卡系统设计

golangboy

极客大学架构师训练营

极客食堂就餐卡系统设计

IT老兵重开始

极客大学架构师训练营 第一周命题作业

第一周课程学习总结

Meow

极客大学架构师训练营 第一周总结

架构师训练营-第一周学习总结

戚伟

架构师

第一周学习总结

jizhi7

极客大学架构师训练营

第一周总结

_

极客时间 架构师 极客大学架构师训练营 第一周总结

Week_01学习总结

golangboy

极客大学架构师训练营

极客时间架构 1 期:第 1 周架构方法 - 命题作业

Null

架构师训练营 第一周作业

haha

极客大学架构师训练营

UML学习总结

行者

「架构师训练营第 1 期」第一周作业 (作业二)

Geek_83908e

极客大学架构师训练营

初学架构方法

Zzzz

极客大学架构师训练营

「架构师训练营第 1 期」第一周作业(作业一)

Geek_83908e

极客大学架构师训练营

食堂就餐卡系统设计

饭桶

食堂就餐卡系统设计

行者

# 架构师训练营Week1作业

lggl

极客大学架构师训练营

我搭建了一套企业级私有Git服务,抗住了每天上万次攻击!

冰河

git 代码管理 代码仓库 私有服务 远程协作

# 架构师训练营Week1总结

lggl

极客大学架构师训练营 UML

架构师训练营 - week1 - 学习总结

month

极客大学架构师训练营

架构师方法论

wing

极客大学架构师训练营

架构师训练营第一周总结

知鱼君

极客大学架构师训练营

Week 1 學習總結

Christy LAW

谷歌使用Grumpy解决CPython的并发问题-InfoQ