Skip to content

v0.1.54

Choose a tag to compare

@hyperion13th144m hyperion13th144m released this 12 Mar 06:56
· 22 commits to main since this release

変更点

  • [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 から試すのが安全です