text: Pythonはスレッドセーフのために、GILと呼ばれるGlobal Interpreter Lockでインタプリタへのアクセスを制限しています。残念ながら、この設計上の決定により、複数のスレッドを同時に実行できるマシンであっても、一度に1つのスレッドしかPythonコードを解釈できないように制限されています。Pythonのコードをデータセットで実行したい場合、データを独立したセグメントに分割できる（データ分割と呼ばれる処理）場合、Pythonのマルチプロセシングライブラリを検討するのがよいでしょう。例として、arg1という1つの引数を取る関数fooを考え、val1、val2、val3という複数の値に対してfoo関数を実行したいとします。def foo(arg1)： # 何かをする if __name__ == '__main__'： foo(val1) foo(val2) foo(val3) fooを複数のプロセスでまとめて実行させるには、マルチプロセシングプールを使って複数のワーカープロセスを一緒に走らせればよいでしょう： from multiprocessing import Pool def foo(arg1)： # 何かをする if __name__ == '__main__'： p = Pool() p.map(foo, [val1, val2, val3]) マルチプロセッシングライブラリは、その他にも並列プログラミングのための様々なAPIを提供しています。もっと知りたいと思いませんか？