我试图把我的头绕着平行运行,似乎我遇到了一种情况,那将是一个理想的解决方案。
我想以串联的方式运行一组作业--称为A-1,A-2,A-3等等。这些操作将与--作业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------------------>为此,让我们假设所有作业都是睡眠$(随机%10)。
我认为作业集和作业之间必须有某种链接(ala -链接)--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发布于 2023-05-29 23:31:23
a() {
seq 10 | parallel -j1 'echo A-{#};sleep $((RANDOM % 10))'
}
b() {
seq 10 | parallel -j1 'echo B-{#};sleep $((RANDOM % 10))'
}
c() {
seq 10 | parallel -j1 'echo C-{#};sleep $((RANDOM % 10))'
}
d() {
seq 10 | parallel -j1 'echo D-{#};sleep $((RANDOM % 10))'
}
export -f a b c d
parallel ::: a b c d如果您想看到输出:
parallel --lb ::: a b c d也可以这样做:
doit() {
seq 10 | parallel -j1 'echo '$1'-{};sleep $((RANDOM % 10))'
}
export -f doit
parallel --lb doit ::: A B C Dhttps://unix.stackexchange.com/questions/747281
复制相似问题