• 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)

  • 相关阅读:
    Ubuntu 12.04 安装scribe 的笔记 | 动漫驿站
    boost install on prinse 12.04 ubuntu
    basic coder » linux下获取当前程序的绝对路径
    spring 使用 groovy 的 utf8 问题
    string转化大小写(C++) | Vimer的程序世界
    linux常用命令一
    STL map与Boost unordered_map 有何不可的日志 网易博客
    本博使用的vim(gvim)相关插件整理
    【转】C++11中值得关注的几大变化 奔向C++ C++博客
    Lua 语言和C/C++集成调研小结
  • 原文地址:https://www.cnblogs.com/findumars/p/6254654.html
Copyright © 2020-2023  润新知