創屋ぷれす

GIL

GIL(Global Interpreter Lock)とは

PythonやRubyでマルチスレッドによる並列処理を行う場合に
それぞれのスレッドで排他制御がかかり、1スレッドずつ処理される仕組みです。

基本的にこの仕組みがあるので、処理速度改善の為も複数スレッド処理をしても
処理速度の向上が見られない場合があります。

pythonなどはC言語で実装されることが多いのですが、
C言語自体がスレッドセーフではない為に、このようなことになるようです。

GILはプロセスごとに一つ存在する為、
速度改善を行う場合は、マルチプロセスで処理することでGILの影響を受けなくなります。

ただし、メモリを共有できない等の制限はあるので
時と場合によって適切に使い分ける必要がありますね。

Comments are closed.