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

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

責任編輯:editor006

作者:臧秀濤

2017-01-13 11:45:03

摘自:INFOQ

Google 運行著大量的 Python 代碼,youtube com 的前端服務器是 Python 寫的,YouTube 的 API 主要也是 Python 寫的。

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>
      主站蜘蛛池模板: 长子县| 潍坊市| 沁水县| 贵德县| 江油市| 嘉峪关市| 兖州市| 维西| 比如县| 连南| 无极县| 南安市| 凤阳县| 抚顺县| 昂仁县| 凤山县| 清流县| 东乡族自治县| 大英县| 逊克县| 巧家县| 香港| 长汀县| 芒康县| 乌兰县| 阿图什市| 泰来县| 尤溪县| 建平县| 大同县| 育儿| 卓资县| 肇东市| 青龙| 蒙阴县| 乐都县| 和顺县| 周宁县| 于都县| 平昌县| 论坛|