golang で コマンドを並列実行するコマンドを作ってみた
発端
Windows には png を最適化してくれる pngout というコマンドがあるけれど、CPU を一個しか使ってくれないので簡単に並列実行したかった。
ソース
バイナリ
使用例
gompetit -r -P 5 -e png pngout "/c6 /f0" dir1 dir2
これで dir1, dir2 に含まれる png ファイルに対して 5 個 pngout が起動されて処理されます。
ファイルはリカーシブに探しにいきます。
-r を指定しなければ引数のディレクトリ、ファイルに対してコマンドを直接実行します。
コマンドが出力する文字コードは shift-jis を想定しているので、他の文字コードだと文字化けすると思います。多分。
Linux だったら xargs 使えばいいし、気にしない。
参考
感謝!
Big Sky :: Golang の channel の使い所
go - Goで[]byteをshift-jisの文字列に変換する - スタック・オーバーフロー