解説
「GIL」(Global Interpreter Lock)は、スレッドに対して、インタプリタ全体で1つのロックを持つ仕組みです。
インタプリタは、ソースコードや中間コードを解釈して実行するプログラムのことです。
スレッドは、プログラム中で複数の処理を並行して実行する際の各処理のことです。各スレッドは、独自のメモリー上のデータを持ちますが、プロセスのデータは共有します。
GILには、メリットとデメリットがあります。
メリットは、次のようなものです。
- 排他制御の処理が軽い。
- 排他制御のためのメモリが小さく済む。
- スレッドセーフ(スレッドで使って安全)ではないCのライブラリとの結合が容易。
GILではこのように、シングルコアのCPUで高速軽量に動作しながら、C言語の資産も活用することができます。
デメリットは、次のようなものです。
- マルチコアCPUで処理を並列でおこない高速化できない。
GILには、メリットとデメリットがあります。そのため、近年AI用途での使用が多いPythonでは、GILを採用している仕組みから、GILの解消に舵を切りつつあります。
Pythonでは、このスレッドを活用する方式をFree Threadingなどと呼んでいます。
サンプル
今回はサンプルはありません。
フィードバックお待ちしております!
ご感想、解説してほしい用語、解説内容のアドバイスなどございましたら、FacebookやX(旧Twitter)などでお気軽に編集部までお寄せください。よろしくお願いいたします。
