CPython のグローバル インタプリタ ロック (GIL) とは何ですか? 質問する

CPython のグローバル インタプリタ ロック (GIL) とは何ですか? 質問する

グローバルインタープリタロックとは何ですか? なぜ問題になるのですか?

Python から GIL を削除することについて多くの騒ぎが起こっていますが、それがなぜそれほど重要なのか理解したいと思います。私は自分でコンパイラもインタープリタも書いたことがないので、詳細を省略しないでください。理解するにはそれらが必要になるでしょう。

ベストアンサー1

Python の GIL は、異なるスレッドからインタープリタ内部へのアクセスをシリアル化することを目的としています。マルチコア システムでは、複数のスレッドが複数のコアを効果的に利用できないことを意味します。(GIL がこの問題を引き起こさなければ、ほとんどの人は GIL を気にしないでしょう。マルチコア システムの普及が進んでいるため、問題として取り上げられているだけです。) 詳細を理解したい場合は、このビデオを見るか、このスライド セットを参照してください。情報量が多すぎるかもしれませんが、詳細を尋ねたことになります :-)

Python の GIL は、リファレンス実装である CPython でのみ実際に問題となることに注意してください。Jython と IronPython には GIL がありません。Python 開発者の場合、C 拡張機能を記述しない限り、通常は GIL に遭遇することはありません。C 拡張機能の作成者は、拡張機能がブロッキング I/O を実行するときに GIL を解放して、Python プロセス内の他のスレッドが実行する機会を得る必要があります。

おすすめ記事