v0.1.54
変更点
- [parse.py:36] に image_max_workers を追加
- [parse.py:164] に max_workers を追加
- [parse.py:184] を追加
- [parse.py:195] を追加
挙動
- max_workers が None のとき: 従来どおりシリアル実行
- max_workers が 1 のとき: シリアル実行
- max_workers が 2 以上のとき: スレッド並列実行
- max_workers が 0 のとき: CPU数ベースで自動設定
120枚サンプル
- workers=1: 16.900 秒
- workers=8: 4.367 秒
- 約 3.87 倍高速、時間短縮は約 74.16%
使い方
例: process_images(image_files, Path("/tmp/images"), Path("/tmp/ocr"), images_params, "jpn", None, max_workers=8)
parse_archive 経由なら image_max_workers を指定できます。
multiprocessing と併用するときの注意
親プロセス側で複数プロセスを回しているなら、各子で max_workers を大きくしすぎると過剰並列になります。
目安は 子プロセス数 × スレッド数 が CPU 論理コア数付近になるよう調整です。
まずは子プロセス内を max_workers=1 か 2 から試すのが安全です