BT

GoogleがGrumpyでCPythonの並列実行性の問題を解決

| 作者: Abel Avram フォローする 10 人のフォロワー , 翻訳者 編集部T フォローする 0 人のフォロワー 投稿日 2017年1月19日. 推定読書時間: 2 分 |

原文(投稿日:2017/01/11)へのリンク

GoogleはCPythonに存在するGlobal Interpreter Lockによって引き起こされる並列実行性の制限を、Goで新しいPythonランタイムを作成することで解決した。

GoogleはYouTubeのフロントエンドとAPIにPythonを使用しており、それはCPython 2.7上で動作している。CPython 2.7は、Pythonインタープリタのリファレンス実装である。コードは長年かけて数百万行に成長しており、うまく機能させるには、大抵、ランタイムのパフォーマンス調整が必要であった。しかし、彼らには解決できずにいた問題が1つあった。Googleによると、それは「CPythonで並列処理をうまく実行させることが非常に困難である」ということである。

他にも実施可能な解決策をいくつか調査した結果、GoogleはPythonコードをGoのランタイム上で実行することに決定した。Goの強力な並列性に対するサポートが理由である。Grumpyプロジェクトの誕生である。Grumpyでは、PythonコードをGoソースコードにトランスコンパイルし、その後、ターゲットプラットフォームのネイティブコードにコンパイルすることができる。中間Goコードは、Pythonオブジェクトを表すデータ構造に適用される一連の操作である。

Grumpyはコンパイルを使用するため、開発の自由度とインタープリタ言語の能力の一部を犠牲にする。しかし、これらの損失は、静的な分析による最適化の改善と、簡単なインポートによりGoパッケージを使用できるようになることで補われるとGoogleは主張している。

静的コンパイルよる他の影響は、GrumpyがCPythonで利用できるexec、eval、compileといったいくつかの動的な機能をサポートしておらず、「おそらくサポートすることはない」ということである。それらをサポートするには、「扱いにくく、実用的でないほど遅いコンパイルツールチェインで、Grumpyプログラムをバンドルする」必要がある。理論上は可能であるが、GrumpyチームはC言語拡張モジュールをサポートする予定もない。理由は「GrumpyにはCPythonとは異なるAPIとオブジェクトレイアウトが用意されている」ためである。

GoogleはGrumpyをCPython 2.7の代わりにしようとしている。将来的にGrumpyがPython 3.xをサポートすることを期待する人がいるかもしれないPython 3のサポートに関する質問の回答として、YouTubeのStaff Software EngineerであるDylan Trotter氏は「我々は巨大なPython 2.7コードベースを持っており、それに注目しています。私は間違いなくPython 3をサポートしたいです。」と述べた。また、彼は別のスレッドで「直近ではPython 3についての具体的な計画はないですが、長期的には間違いなくサポートしたいです。」と述べた。

GoogleはApache 2.0ライセンスで、GitHub上でGrumpyをオープンソース化した。開発者にコメント、貢献してもらうためである。そのためにフォーラムも作成された。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT