並列処理のための標準モジュール multiprocessing を使ったコードを Pyinstaller で固める
注意:とんでもないことが起きます。
単にpyinstallerしてバイナリ化したモジュールを走らせると、、、
1つ実行して停まるたびに次の実行を延々と繰り返しよる!
下手すると同一処理が無数に走って世界を埋め尽します。
それだけでなく、このプロセスが繰り返し時に重複して走るために、重複していなければ起きない様々な例外を引き起こしてエラーメッセージでコンソールが埋め尽くされ何が原因か分からなくなるという副作用もあります。
重要:最初にfreeze_support() を呼ぶこと
WindowsでもPosixでもfreeze_support()は必要です。
2024年9月現在、「freze_support() は Windows限定」というのは誤情報です。
if _ _ name _ _==' _ _ main _ _':
の直後に置けという説示も見かけるが本質的にはmultiprocessingを動かす前にmultiprocessing.freeze_support()ということでしょう。
multiprocessingの最初のインポートの直後に呼んでしまってよいと思う。
↓ 本家ドキュメントのP29あたりにあります。
https://pyinstaller.org/_/downloads/en/v6.4.0/pdf/