- blogs:
- cles::blog
2012/03/13

xargs でコマンドを並列実行(複数起動)させる


ディレクトリにあるファイルを一括で処理したいときに find と xargs の組み合わせでスクリプトを書くのは定番になっていますが、圧縮など一つ一つの処理がかなり重い場合、処理をシリアルに実行していくとものすごく時間がかかります。最近のCPUは複数コアを搭載している場合が多いですが、複数のコアを使って動くプログラムは少ないので、処理を複数のプロセスで並列実行すれば(CPUの空き時間を使い切れるので)早く終わらせることができます。
これまでは xargs を手動で2つ実行するとかアホなことをやっていたのですが、xargs 自体に複数プロセスを立ち上げさせる機能が備わっていたのを見つけたのでメモ。
xargsコマンドを使って指定したコマンドを並列実行させる - 技術メモ帳
あまり知られていないが、GNUのxargsコマンドには、プロセスの最大数を設定できるオプションというのが用意されている。
コレを使って、プロセスを並列実行させてみよう。
xargs --max-procs=MAX-PROCS -P MAX-PROCS command
ちょっとテストしてみましたが、確かに複数プロセスで処理できていますね。
$ date ; seq 1 5 | xargs -n1 -P 1 sleep ; date
Tue Mar 13 17:59:40 JST 2012
Tue Mar 13 17:59:55 JST 2012
$ date ; seq 1 5 | xargs -n1 -P 5 sleep ; date
Tue Mar 13 18:00:07 JST 2012
Tue Mar 13 18:00:12 JST 2012
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4827
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112160)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110796)
3 . 年次の人間ドックへ(110386)
4 . 2023 年分の確定申告完了!(1つめ)(109934)
5 . 三菱鉛筆がラミーを買収(109834)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110796)
3 . 年次の人間ドックへ(110386)
4 . 2023 年分の確定申告完了!(1つめ)(109934)
5 . 三菱鉛筆がラミーを買収(109834)
cles::blogについて
Referrers