Pythonで、CPUを複数使用した複数スレッドによる実装を行うために用意されているのものがある。
それが、concurrent.futuresから利用できるmultiprocessingモジュール。
複数CPUでの処理が可能となり、子プロセスを並列処理として扱うことが出来る。
GILは、プロセスごとに適用されるため、CPUの利用を完全に個別に扱うことが可能となる。
プロセスはリンクを持つので、データの受け渡しも可能。
concurrent.futures
multiprocessingを拡張し、扱いやすくしたモジュール。
multiprocessingのみ使用しようとすると、とても複雑な処理を行う必要がある。
特別理由がなければ、concurrent.futuresのThreadPoolExecutorを利用すると良い。
速度向上を求めたいのであれば、ProcessPoolExecutorの利用も検討する。
上記の判断は、処理の分離具合と、やりとりするデータ量を鑑みて判断するのが良い。
どうしてもさらなる高速化が必要ならば、multiprocessingモジュールを利用を検討する。