1. ホーム
  2. パイソン

[解決済み】CPythonのグローバルインタープリターロック(GIL)とは何ですか?

2022-04-04 20:13:47

質問

グローバルインタープリターロックとは何ですか、またなぜそれが問題なのですか?

PythonからGILを削除することが騒がれていますが、なぜそれが重要なのか理解したいです。私は自分自身でコンパイラもインタプリタも書いたことがないので、詳細について質素にしないでください。

どのように解決するのか?

PythonのGILは、異なるスレッドからインタープリタ内部へのアクセスを直列化することを目的としています。マルチコアシステムでは、複数のスレッドが複数のコアを効果的に利用できないことを意味します。(GILがこの問題を引き起こさないのであれば、ほとんどの人はGILを気にしないでしょう。マルチコアシステムが普及しつつあるからこそ、問題として提起されているのです)。詳しく理解したい場合は、以下をご覧ください。 このビデオ をご覧ください。 このスライドは . しかし、あなたは詳細について尋ねました :-)。

PythonのGILは、リファレンス実装であるCPythonだけの問題であることに注意してください。JythonとIronPythonはGILを持ちません。Pythonの開発者として、Cの拡張を書かない限り、一般的にGILを目にすることはありません。C拡張の作者は拡張がブロッキングI/Oを行うときにGILを解放する必要があり、Pythonプロセスの他のスレッドが実行する機会を得ることができるようにします。