標籤:start ati href nand 選擇 語言 import hub from
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!