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)
Grumpy: Go 上运行 Python!的更多相关文章
- 在 android 上运行 python 的方法
在android上运行python脚本,或者在android上使用python交互界面,对熟悉python的研究或开发人员来说,是一件很有吸引力的事情,因为python脚本真是非常高效,另外,有很多非 ...
- 呵呵!手把手带你在 IIS 上运行 Python(转)
原文:http://blog.csdn.net/yangzhencheng_001/article/details/40342449 公司的网站让我头痛死了.在众多前辈高手的带领下,一大堆的 CMD ...
- Eclipse上运行Python,使用PyDev
转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev/index.html 级别: 初级 郑 伟芳 (zhengwf@c ...
- 服务器(Linux)上运行python总结
跑实验换了几次服务器了,每次遇到相似问题都要重新百度,而且每次百度搜索出的顺序都不一样,又得重新找半天,这次把遇到的问题都总结一下. 1.准备 PuTTY和FileZilla FileZilla使用F ...
- 如何在华为云软件开发云上运行Python
一. 华为云软件开发云与Python 1. 华为云软件开发云简介 华为云软件开发云(DevCloud)是集华为近30年研发实践,前沿研发理念,先进研发工具为一体的一站式云端DevOps平台,面向开发者 ...
- 安装Termux的手机上运行Python
1. Termux 终端 Android是一个单用户图形化系统,功能主要以应用的形式呈现给用户,因此在系统上我们无法直接获取终端,更是无法直接调用系统自带的丰富指令.使用ADB是一个曲线救国的方法,打 ...
- 安装notepad++ 安装Python Python环境变量的数值。怎样在notepad++上运行Python的代码
文章目录 1.下载安装一个Python的编辑器notepad++,(我这里有现成的,也可以去网上搜很多) 2.安装python,(我这里有现成的,也可以去网上下载). 3.怎样彻底删除Python,有 ...
- 在 Android 手机上运行 Python 程序
- 如何在没有安装 Python 的机器上运行 Python 程序
cmd 命令 1. pip install pyinstaller 2. pyinstaller <path to your prog.py> 3. 应用程序在prog.py同路径下的 d ...
随机推荐
- 十一个行为模式之观察者模式(Observer Pattern)
定义: 定义对象之间一种一对多的关系,当被观察者状态变化时,可以自动地通知观察者并执行相关的业务操作.观察者模式又被称为发布-订阅模式等. 结构图: Subject:抽象主题类,定义了所有被观察类的通 ...
- getElementById() getElementsByTagName() getElementsByClassName() querySlector() querySlectorAll()区别
1. getElementById() getElementsByTagName() javascript原生的方法,这两个不会有兼容性问题. 2. getElementsByClassName() ...
- 你所不知的 CSS ::before 和 ::after 伪元素用法
CSS 有两个说不上常用的伪类 :before 和 :after,偶尔会被人用来添加些自定义格式什么的,但是它们的功用不仅于此.前几天发现了 Creative Link Effects 这个非常有意思 ...
- iOS歌词逐渐变色动画
实现歌词逐渐变色的动画,像卡拉OK一样可以根据时间进度来染色.效果如图: 因项目需求要实现一个类似歌词逐渐变色的效果,自己想来想去想不出来实现方案,还是得求助万能的google, 最终是找到了这篇 ...
- XML 概述 (可扩展标记语言)
XML:eXtensible Markup Language 可扩展标记语言 概念:可扩展:xml中所有的标签都是自定义的.没有预定义的. 功能: 存储数据 ...
- 史上最全的ASP.NET MVC路由配置
MVC将一个Web应用分解为:Model.View和Controller.ASP.NET MVC框架提供了一个可以代替ASP.NETWebForm的基于MVC设计模式的应用. AD:51CTO 网+ ...
- routes.rb和link_to的一些规则
rails文档中描述了一个知识,link_to方法用于产生链接,但链接是根据routes.rb中的路由规则来产生的.这又分为面向资源和非面向资源两种产生链接的方法.比如 routes.rb文件中有两条 ...
- Maven基础配置—本地Maven配置
1.下载客户端 通过http://maven.apache.org/download.cgi#下载Maven本地客户端. 我下载的是apache-maven-3.2.5-bin.zip,在D盘解压. ...
- Linux命令学习总结: file命令
命令简介: 该命令用来识别文件类型,也可用来辨别一些文件的编码格式.它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的. 执行权限 :All User 指令所在 ...
- ORA-00600: internal error code, arguments: [kcratr1_lastbwr], [], [], [], [], [], [], []
今天在PlateSpin Forge(关于PlateSpin相关介绍,请见最下面部分简单介绍) 复制出来的一台数据库服务器上,测试数据库能否正常启动时,遇到了"ORA-00600: inte ...