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

简介:

谷歌通过使用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中可用的一些动态功能:exec、eval和compile,因为支持它们将需要“使用笨重而低效的编译工具链构建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,邀请开发人员评论和贡献。 还为此设立了一个论坛。

本文转自d1net(转载)

相关文章
|
1月前
|
并行计算 Python
python并发编程: Python速度慢的罪魁祸首,全局解释器锁GIL
python并发编程: Python速度慢的罪魁祸首,全局解释器锁GIL
23 1
python并发编程: Python速度慢的罪魁祸首,全局解释器锁GIL
|
8月前
|
Java 开发者 Python
< Python全景系列-5 > 解锁Python并发编程:多线程和多进程的神秘面纱揭晓
< Python全景系列-5 > 解锁Python并发编程:多线程和多进程的神秘面纱揭晓
48 0
|
3月前
|
人工智能 PyTorch 开发工具
Python潮流周刊#5:并发一百万个任务要用多少内存?
Python潮流周刊#5:并发一百万个任务要用多少内存?
31 0
|
3月前
|
程序员 调度 云计算
Python并发编程的未来趋势:协程、异步IO与多进程的融合
Python并发编程的未来趋势:协程、异步IO与多进程的融合
|
3月前
|
分布式计算 安全 Python
解释Python中的GIL(全局解释器锁)对多线程编程的影响。
解释Python中的GIL(全局解释器锁)对多线程编程的影响。
26 0
|
12月前
|
机器学习/深度学习 人工智能 安全
这一次,Python 真的有望告别 GIL 锁了?
这一次,Python 真的有望告别 GIL 锁了?
289 0
|
9月前
|
机器学习/深度学习 人工智能 安全
Python社区变天:可去除全局解释器锁GIL,真正多线程要来了
Python社区变天:可去除全局解释器锁GIL,真正多线程要来了
265 0
|
9月前
|
安全 Unix 测试技术
Python 中的多线程和多进程 | 长文详解
Python 中的多线程和多进程 | 长文详解
|
10月前
|
安全 Java Python
Python 全局解释器锁(GIL):影响因素、机制与性能优化
Python 全局解释器锁(GIL):影响因素、机制与性能优化
195 1