Python(CPython) の並列処理で適切にパフォーマンス改善する方法を解説します。 一般に並列処理で思い付くのはスレッド処理ですが、Python には GIL(グローバル・インタプリタ・ロック)と呼ばれるロック機構があるため、その方法ではパフォーマンス改善を望めないことがあります。 なぜならば Python コードを実行できるのは GIL を保持したスレッドだけなので複数スレッドで並列処理をしたつもりでも実際に実行されるのは1スレッドだけで、実質的には並行処理となってしまうからです。 当記事はスレッドベースの並行・並列処理の問題と、それに代わるプロセスベースの並列処理のメリットデメリットや大量のデータを扱う場合のパフォーマンス特性を解説します。 検証には Python 3.9.12 / Ubuntu 20.04.4 LTS を利用しています。 GIL の影響を見てみる 以下のような