タグ

ブックマーク / yatt.hatenablog.jp (1)

  • IronPythonでマルチスレッドプログラミング + Python3.2RC2のGIL - yattのブログ

    PythonでのマルチスレッドプログラムとGIL C言語とかJavaでマルチスレッドプログラムを組んでからCPython(C言語のPython実装)でマルチスレッドプログラムを組むとつまずきます。並列プログラムで実行速度が上がらないからです。 その原因は、Pythonインタプリタがスレッドセーフでないためで、スレッドはインタプリタ全体のロック(Global Interpreter Lock)を取得し排他的に実行されるため、同時に実行可能なスレッド数は1に制限され*1 *2、さらにスレッド切替えのコストが加わります。RubyのバーチャルマシンのYARVも同様にGVLというロックでスレッド数を1に制限しているようです*3。 I/Oがたくさんあるとか、スレッドそれぞれが外部プロセスで並列動作するソフトを起動するとかであれば問題ないのかもしれません。例えばImageMagickのconvertコマ

    IronPythonでマルチスレッドプログラミング + Python3.2RC2のGIL - yattのブログ
  • 1