如何評價 Google 開發的,將 Python 轉譯為 Go 的 runtime:Grumpy?

Google運行了數百萬行Python代碼,YouTube及其API的前端伺服器代碼主要是用Python語言開發的,運行的是 CPython 2.7。Google多年來一直優化Python代碼,但始終有一個問題沒有解決:並發工作負荷。Google調查了其它Python運行時,但每一種都有利有弊,在解決並發性能的同時會引入新的問題。Google因此嘗試用Go語言實現了一個替代運行時優化實時服務。這個項目被稱為Grumpy,將Python代碼轉譯到Go程序,在Go運行時中運行,結果相當不錯。 Grumpy不支持C擴展,沒有CPython的全局解釋器鎖——它被認為是影響並發性能的主要瓶頸。

官方介紹:https://opensource.googleblog.com/2017/01/grumpy-go-running-python.html

Github: https://github.com/google/grumpy

官方的 benchmark:

https://lh6.googleusercontent.com/AJtJgMwyxN3KWnDrHW5JhersJGuf1SsR_lhhQoUY5gSMBjhV-BJo-vWh4JztqD7qq9pcr0JYT-niwehvDqvCmM8ZhCUAkgZFpviWnNKah5xGJCNGuMAGBdhYYhT3ZbN-HDfw_Fs3


興沖沖的點進去看… 結果我readme直接牌子在我的臉上。 百分之百轉換python 到go基本是奢望。 下圖說的很清楚:

1. 語言特性:原因基本是因為operator還沒支持。

2. 內置函數和類別:完了,基本任何大型項目都轉不了。

3. 標準庫…想想也是。python那麼多標準庫還能一一對應全部給轉了? 還想這樣,估計的把python的標準庫全部用go實現一遍。

總的來說,這就是google內部做不下去的項目開源看看社區的反應。 棄之可惜,食之無用的雞肋都是這樣被拋棄的。


推薦閱讀:

為什麼Pypy沒有被推廣以及取代CPython?
for循環在Python中是怎麼工作的
回應「如何評價《python web開發實戰》?」的評價
國內有哪些 Django 牛人?
Python從零開始系列連載(12)——Python的基本運算和表達式(下)

TAG:Web開發 | YouTube | Python | PyPy | Go語言 |