精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Grumpy:Google 用 Go 開發的 Python 運行時

責任編輯:editor004

作者:臧秀濤

2017-01-12 11:35:09

摘自:INFOQ

Google 運行著大量的 Python 代碼,youtube com 的前端服務器是 Python 寫的,YouTube 的 API 主要也是 Python 寫的。YouTube 的前端主要依賴 CPython 2 7,所以 Google 花費了大量精力來優化運行時,并調整應用,以獲得最好的性能。

Google 運行著大量的 Python 代碼,youtube.com 的前端服務器是 Python 寫的,YouTube 的 API 主要也是 Python 寫的。到了 YouTube 的量級,性能非常重要。YouTube 的前端主要依賴 CPython 2.7,所以 Google 花費了大量精力來優化運行時,并調整應用,以獲得最好的性能。

了解 CPython 的讀者應該都知道,GIL(Global Interpreter Lock)的存在,制約了 Python 應用的并發能力。

調研了很多其他 Python 運行時,并沒有哪種方案能夠在不引入新問題的前提下解決并發問題。

Google 的工程師開始思考一個問題,是不是可以開發一個針對實時服務進行優化的新運行時呢?

Grumpy 應運而生了。

Grumpy 是一個實驗性的 Python 運行時。它將 Python 代碼翻譯成 Go 程序,轉譯(transpiled)得到的程序可以與 Go 運行時無縫集成。

因為 Google 目前有大量的 Python 代碼,所以高度兼容 CPython 就非常重要。

Grumpy 有兩個重要的設計選擇。

首先,不支持 C 擴展模塊。雖然代價是無法利用現有的大量 Python C 擴展,但是優勢很明顯,就是可以靈活地針對并行負載設計API和對象表示。而且 Grumpy 去掉了 GIL,這就可以利用 Go 的垃圾收集來管理對象生命周期,而不再是依賴引用計數。

其次,Grumpy 不是解釋器。Grumpy 程序和其他任何 Go 程序一樣編譯、鏈接。盡管犧牲了開發和部署的靈活性,但是靜態編譯時可以進行更多優化。和 Go 代碼的互操作也非常強大。Grumpy 程序可以像導入 Python 模塊那樣導入 Go 包。不支持exec 、 eval 和 compile 等動態特性,Google 的產品中不會使用這些特性,所以這也是可以接受的。

按功能分,Grumpy 可以分為 grumpc 、 Grump 運行時和 Grumpy 標準庫三塊。其中grumpc 負責將 Python 程序轉換為 Go 程序。解析 Python 代碼,生成 Go 代碼。它是用 Python 實現的。

只支持 Python 2.7,社區有很多吐槽,不過 Google 的很多代碼還是以該版本為主,也是可以理解的。

Grumpy 還在開發之中,感興趣的讀者可以在 GitHub 上查閱相關代碼。

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 永善县| 浏阳市| 靖安县| 平湖市| 祁连县| 奈曼旗| 柳州市| 茶陵县| 大悟县| 惠安县| 鹰潭市| 南丹县| 湖州市| 皋兰县| 宜都市| 阿克陶县| 永登县| 蒙阴县| 麻栗坡县| 南宫市| 汤阴县| 嘉鱼县| 元阳县| 望谟县| 宣汉县| 海丰县| 乐业县| 长顺县| 社旗县| 佛山市| 安庆市| 土默特左旗| 从化市| 翁牛特旗| 保定市| 德江县| 外汇| 青岛市| 凯里市| 礼泉县| 岳阳县|