Pythonディスパッチ:GILをオプションにする
運営評議会は Pythonの将来に関する重大発表があった。.すなわち、彼らはCPythonでGlobal Interpreter Lock (GIL)をオプショナルにし、最終的にはGILを完全に削除することを決定しました。
これはPythonを根本から変える大きな決断だ。
そこで今回は、GILとは何か、そのメリットとデメリット、そして今後の展望を解説する。
GIL
グローバル・インタープリター・ロックの逆順で、単語を一つずつ見ていこう。 ロック そして 通訳 そして最後に グローバル.
ロックとは、一度に1つのスレッドしか実行できないようにする仕組みのことだ。つまり、あるスレッドがロックを手に入れると、そのスレッドはPythonインタプリタに排他的にアクセスできるようになります。
アン インタプリタは、Pythonコードを実行するためのプログラムです。.
ここで言う「グローバル」とは、インタプリタロックのスコープを指しています。インタプリタロックはグローバルなので、1つのプロセス内で同時に1つのスレッドだけがPythonコードを実行することを保証します。
つまりGILは、インタープリターを通じて複数のスレッドが同時に実行されるのを防ぐメカニズムなのだ。しかし、なぜそんなことを望むのか?
メリット
GILの第一の利点は、物事が簡単になるということだ。メモリの管理が簡単になり、スレッドの管理が簡単になり、モジュールの作成が簡単になる。
GILがないと、マルチスレッドですぐに問題にぶつかります。各スレッドに適切なローカルロックをかけないと、Pythonをクラッシュさせたり、コンピュータの他のメモリを壊してしまうかもしれません。
また、マルチスレッドでない場合は、GILがすべてをスムーズに動かしてくれるので超便利だ。
だからGILはシンプルで安全なのだ。
それなら、なぜそれを望まないのか?
デメリット
ここでのトレードオフは、スピードと手軽さだ。
マルチスレッドを防ぐことによって、GILはCPythonを他のいくつかの言語(C++、Go、Rustなど)よりも遅く、性能の低いものにしています。
特にここ数ヶ月のAIの爆発的な普及により、GILはプログラムを迅速かつ効率的に実行する上でますます問題になってきている。
GILの未来
だから、運営評議会は、この決定を受け入れたと発表した。 Python Enhancement Proposal (PEP) 703, Sam Gross 著私たちは未知の領域に足を踏み入れている。
数え切れないほどの拡張がGILを念頭に書かれてきた。CPythonで設定されている標準はすべてGILに依存しています。誰もがCPythonのプログラムの中心にGILを置いてビルドしています(意図的であろうとなかろうと)。
そのため、運営協議会は当初GILを任意とするが、長期的にはGILを段階的に完全に廃止する予定である。
GILありのビルドとGILなしのビルド(および拡張モジュール)の間に恒久的な分裂を作りたくないのです。
これは絶対にPythonを変えるだろうし、おそらく最も興味深いのは、まだ誰も知らない方法でだ。ブレット・キャノン コア開発チームへの投票でPythonをフリースレッドにすることは...未知の部分が多い。Pythonをフリースレッドにするには...未知の部分がたくさんある。
GILは姿を消しつつある。
そしてさらに重要なのは、新しいCPythonはどのようなものになるのか、ということだ。