• 本当は、田舎に庵を建てて隠遁生活したいけど、先立つものも無いので自宅で..。

【Python】マルチスレッドとマルチプロセス

Pythonでは、マルチスレッドとマルチプロセスが結構複雑な関係になっているみたい。 

PythonにはGlobal Interpreter Lockという機能があって、スレッドが同時に実行できない仕様になっているらしい。 マルチコアのCPUを使っても、スレッドが同時に実行できないので効果が発揮できない。

ただ、Python以外の処理、例えばファイルの読み書きとかGPUでの処理ではGILが解放されるので、そういった処理が多いアプリではマルチコアの効果が発揮できる。

一方、マルチプロセスは、プロセスが同時に進行できるので、マルチコアのCPUで効果が発揮できる。 ただし、メモリが共用できないので同じメモリ領域を使う場合は、最初にメモリをコピーするという前処理が発生して効率が落ちる。

結局、どっちを使ったらいいかは、メモリを共有するかとかPython以外の処理の多さとかで決める必要があってなかなか難しそう。 

まあ、そんなにシビアなものを作ることはないと思うので、そんなに心配する必要はないと思うけど、実際にコードを書いてみて慣れるしかなさそう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA