bioinfomatics では、計算対象となるファイルがたくさんで・サイズが大きいので、並列化は重要なテーマです。
find と xargs は組み合わせて使うことが多いので、並列化をパターンで覚えると良いですね!
xargs 実行コマンドの並列化
xargs の -P オプションを使うと、xargsに引数として渡したコマンドを並列に実行します。
例では、探索したファイル(3個)に「少し時間のかかる処理」を実行したのですが、計測時間が約1/3になりました。
並列化なし
$ SECONDS=0; find . -name "*.file" | xargs -I %% some_command %%; echo $SECONDS 214
並列化あり
$ SECONDS=0; find . -name "*.file" | xargs -I %% -P 3 some_command %%; echo $SECONDS
72
並列化の効果を計測する
環境変数 SECONDS (シェルの起動秒数を保持)を利用すると、簡単に時間を計測できます。
$ SECONDS=0; find . -name "*.file" | xargs -I %% -P 3 some_command %%; echo $SECONDS 72
参考書籍など
わかりやすいと評判の本です。