我正在尝试并行并行运行,似乎我遇到了一种理想的解决方案。
我想连续运行一组作业——称它们为 A-1、A-2、A-3 等等。这些将与 --jobs 1(或 sem?)一起运行。
我想并行运行这些集合——称它们为 A、B、C 等等。这些将以默认数量的作业(核心)运行。
“A”组作业中的作业数量可能与“B”组作业中的作业数量不同;C或其他类似。
从视觉上看,横轴是时间,纵轴是作业集:
A-1--->A-2--->A-3--->
B-1->B-2-->B-3-->B-4--->
C-1-------------C-2--->
D-1------------------>
为此,我们假设所有作业都处于睡眠状态 $((RANDOM % 10))。
我假设工作集和工作之间必须有某种联系(ala --link)——A 有 1、2 和 3;B 有 1、2、3 和 4;C 有 1 和 2;和 D 只有 1,使用上面的视觉效果。
这可能是我尝试做的更好的例子,使用@ole-tang 的解决方案
$ declare -fp apples bananas cherries dates
apples ()
{
echo -n grannysmith fiji pinklady | parallel -d' ' -j1 'echo apples-{#}: {};sleep $((RANDOM % 3))'
}
declare -fx apples
bananas ()
{
echo -n plantain cavadish red manzano | parallel -d' ' -j1 'echo bananas-{#}: {};sleep $((RANDOM % 3))'
}
declare -fx bananas
cherries ()
{
echo -n sweet sour red yellow bing | parallel -d' ' -j1 'echo cherries-{#}: {};sleep $((RANDOM % 3))'
}
declare -fx cherries
dates ()
{
echo -n medjool khola | parallel -d' ' -j1 'echo dates-{#}: {};sleep $((RANDOM % 3))'
}
declare -fx dates
$ parallel ::: apples bananas cherries dates
bananas-1: plantain
bananas-2: cavadish
bananas-3: red
bananas-4: manzano
dates-1: medjool
dates-2: khola
apples-1: grannysmith
apples-2: fiji
apples-3: pinklady
cherries-1: sweet
cherries-2: sour
cherries-3: red
cherries-4: yellow
cherries-5: bing
如果你想看到输出:
也可以这样做: