fx () {
name=$1
age=$2
echo $name $age
}
みたいな関数を並列でやりたいと思う。どうしてもprallelで。
引数リストがタブ区切りのテキストで与えられているもしくはパイプの向こうからやってくる場合。
hoge 10
fuga 20
piyo 30
例えばとかいうnenrei.txtみたいなファイルがあった時
cat nenrei.txt | while read name age; do
parallel --colsep '\t' fx $name $age
done
でいける。並列数を制限したい時は
cat nenrei.txt | while read name age; do
parallel -j 3 --colsep '\t' fx $name $age
done
とかすれば良い。
cat nenrei.txt | while read name age; do
parallel -j 3 --colsep '\t' fx $name $age
done > kekka.txt
とかすれば結果は書き込まれるが終わった順になるのでランダムに並びます。