Grumpy: Go 上运行 Python!

Google 运行数百万行Python代码用于驱动youtube.com和YouTube API的前端服务器,每秒可以提供数百万的请求! YouTube的前端运行在CPython 2.7上,所以我们投入了大量的工作来改进运行时,并使我们的应用程序能很好地在其中工作。这些努力多年来取得了很多成果,但有一个问题一直得不到解决:高并发、高负载的工作很难在CPython上很好地运行。

为了解决这个问题,我们查看了许多其他Python运行时。每个都有权衡,没有解决并发问题,也没有引入其他问题。

于是我们有了一个疯狂的想法:如果我们实现一个替代运行时优化的实时服务呢?Go似乎是一个明智的平台选择,因为它的操作特性与我们的用例(例如轻量级线程)能很好地匹配。我们想要一流的语言互操作性,Go的强大的运行时类型反射系统能让这一点变得十分简单,Python在Go上会很自然,所以Grumpy诞生了。

Grumpy 是一个 Python to Go 源代码编译器和运行时,旨在替代 CPython 2.7。

关键的区别是它将 Python 源代码编译为 Go 源代码,然后将其编译为本机代码,而不是字节码。这意味着 Grumpy没有 VM。编译的 Go 源代码是对 Grumpy 运行时的一系列调用,Go 库服务与 Python C API 类似的目的(尽管不直接支持 C API)。

部分内容编译自:opensource.googleblog.com

作者:Dylan Trotter,YouTube工程

http://www.oschina.net/news/80693/go-running-python

------------------------------------------------------------------------------------

https://github.com/google/grumpy

现在在阿里工作的赵海平在Facebook工作时就主导过类似项目(HipHop).
就是用HPHPc把PHP代码转换成C++代码,然后用g++编译成机器码来执行.
后来实践发现这样做不利于部署和调试,于是转回VM的思路,搞出了HHVM(基于LLVM JIT).
后来PHP官方开发的PHP7和Zend-JIT就是对HHVM的强势回应.

其实陈士骏他们最开始是用PHP开发了Youtube,是后来才改成Python.
https://www.quora.com/Which-Python-web-framework-was-YouTube-built-with-when-they-started-off
Contrary to popular belief, YouTube was first built with PHP when it started, and not Python.

仔细看了下,发现这个项目还真不简单,居然可以直接用Go的标准库,害怕了

from __go__.net.http import ListenAndServe, RedirectHandler

handler = RedirectHandler(‘http://github.com/google/grumpy‘, 303)
ListenAndServe(‘127.0.0.1:8080‘, handler)

时间: 2024-10-03 16:18:50

Grumpy: Go 上运行 Python!的相关文章

在 android 上运行 python 的方法

在android上运行python脚本,或者在android上使用python交互界面,对熟悉python的研究或开发人员来说,是一件很有吸引力的事情,因为python脚本真是非常高效,另外,有很多非常好的库 android官方目前没有支持在android设备运行python,但是网上有一些项目组做了这个事情:http://geeknizer.com/install-run-python-apps-scripts-on-android/  这个链接就提供好几个项目,我稍微尝试了  Kivy  这

如何使用CLI命令在输入文件参数上运行Python脚本来生成输出文件

如何使用CLI命令在输入文件参数上运行Python脚本来生成输出文件. 根据我的理解,analysis.py是python脚本,-s和-p是分别包含Sales.csv和Products.csv中的csv数据的变量名. 在analysis.py中,我如何接受存储在-s和-p中的两个CSV,然后创建一个名为SalesReport.csv的输出? 我是否会创建一个名为SalesReport.csv的空白csv文件,然后将分析的数据写入文件? 或者命令行是否会使用存储在sales-report变量中的数

呵呵!手把手带你在 IIS 上运行 Python(转)

原文:http://blog.csdn.net/yangzhencheng_001/article/details/40342449 公司的网站让我头痛死了.在众多前辈高手的带领下,一大堆的 CMD 在网站里运行得好好地,黑客攻击也好好地,只有网站和我不好好地,我快累死了,网站快挂了... 为了解决这个问题,我想到了 Python 来解决.可是网站上如何运行 Python.我在网上找了很多资料.结果,互相抄来抄去的,问题层出不穷——各种问题都在我眼前显现.在我不断地瞎折腾,经理在边上不断地看我发

呵呵!手把手带你在 IIS 上运行 Python

公司的网站让我头痛死了.在众多前辈高手的带领下,一大堆的 CMD 在网站里运行得好好地,黑客攻击也好好地,只有网站和我不好好地,我快累死了,网站快挂了... 为了解决这个问题,我想到了 Python 来解决.可是网站上如何运行 Python.我在网上找了很多资料.结果,互相抄来抄去的,问题层出不穷--各种问题都在我眼前显现.在我不断地瞎折腾,经理在边上不断地看我发疯的情况下,我终于撞出了答案.其实,答案很简单,如同窗户纸一样.记得在我父亲小时候,他们有一句儿歌"洗脚水熬冬瓜 脚巴泥拌豆腐 擦屁股

Linux上运行python出现错误“/usr/bin/env: python3: No such file or directory"

If you see the error ": No such file or directory" (with nothing before the colon), it means that your shebang line has a carriage return at the end, presumably because it was edited under Windows (which uses CR,LF as a line separator). The CR c

用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控

写在前面 前文:用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 为了方便,这篇文章里的例子均为伪分布式运行,一般来说只要集群配置得当,在伪分布式下能够运行的程序,在真实集群上也不会有什么问题. 为了更好地模拟集群环境,我们可以在mapred-site.xml中增设reducer和mapper的最大数目(默认为2,实际可用数目大约是CPU核数-1). 假设你为Hadoop安装路径添加的环境变量叫$HADOOP_HOME(如果是$HAD

一段代码可以让Python直接在Linux/Mac/Unix上运行

在ptyhon文件头上加上 #!/usr/bin/env python 即可直接在Linux/Mac/Unix上运行 并且也可以定义其编码方式 代码如下: # -*- coding: utf-8 -*-

解决python在windows上运行弹出cmd窗口(dos窗口)

运行python程序的时候会在背景显示一个cmd,要想不显示其实很简单(虽然是我找了1个小时...才了解的基本知识) 方法1:pythonw xxx.py 方法2:将.py改成.pyw (这个其实就是使用脚本解析程序pythonw.exe) 原文: 1) Try changing the file extension to .pyw. Double-clicking a .pyw will use pythonw.exe instead of python.exe. python.exe运行的时

Python在Android系统上运行

下载 Scripting Layer for Android (SL4A) https://github.com/damonkohler/sl4a https://www.tutorialspoint.com/sl4a/ https://mafiadoc.com/python-for-android-documentation_59bd673b1723ddb63c355d46.html pydev 功能及使用示例 http://blog.csdn.net/lainegates/article/d