Gnu並列性を使用するスクリプトがあります。各「繰り返し」ごとに2つのパラメータを渡したいと思います。
シリアル実行には次のものがあります。
for (( i=0; i<=10; i++ ))
do
a = tmp1[$i]
b = tmp2[$i]
done
並列化したいです。
func pf()
{
a=$1
b=$2
}
export -f pf
parallel --jobs 5 --linebuffer pf ::: <what to write here?>
ベストアンサー1
集中を維持するために他のparallel
フラグを省略しています...
parallel --link pf ::: A B ::: C D
まず、次のようにa=A
関数をb=C
実行します。a=B
b=D
a=A b=C
a=B b=D
それ以外の場合は、--link
次のような完全な組み合わせを得ることができます。
a=A b=C
a=A b=D
a=B b=C
a=B b=D
修正する:Ole Tangeがコメントで述べたように、[削除済み -エド。]これを行うもう1つの方法があります::::+
演算子を使用することです。ただし、これら2つのオプションには重要な違いがあります。もしパラメーター位置ごとにパラメーター数が同じではありません。説明するために例を見てください。
parallel --link pf ::: A B ::: C D E
出力:
a=A b=C
a=B b=D
a=A b=E
parallel pf ::: A B :::+ C D E
出力:
a=A b=C
a=B b=D
したがって、--link
すべてのパラメータが消費されるように「ラップ」され、:::+
追加のパラメータは無視されます。 (通常の場合、--link
代替は自動的に入力を無視することですので、私はそれを好みます。YMMV。)