限制嵌套或并发 GNU 并行调用中的作业总数
Limit total number of jobs within nested or concurrent GNU Parallel invocations
这是 this question and this question 在嵌套 GNU Parallel 上的延续。最终我想要实现的是让我的 Makefile 保持不变,除非更改 SHELL=
变量并使用 parallel
在我所有的机器上分配作业。
有没有办法确保 GNU Parallel 的并发执行遵守外部调用中指定的 --jobs
子句?或者通过其他方式来限制并行调用中的作业总数?例如:我希望下面输出中的内槽始终为 1
,即输出第三行的 slot 1-2
违反了条件。
~• inner_par="parallel -I // --slotreplace '/%/' --seqreplace '/#/'"
~• cmd='echo id {#}-/#/, slot {%}-/%/, arg {}-//'
~• seq 2 | parallel -j 1 "seq {} | $inner_par $cmd"
id 1-1, slot 1-1, arg 1-1
id 2-1, slot 1-1, arg 2-1
id 2-2, slot 1-2, arg 2-2
~•
您在寻找 sem
吗?
parallel -j 10 parallel -j 20 sem -j 30 --id myid mycmd
这将开始 200 sem
秒,但只有 运行 30 mycmd
并行。
这是 this question and this question 在嵌套 GNU Parallel 上的延续。最终我想要实现的是让我的 Makefile 保持不变,除非更改 SHELL=
变量并使用 parallel
在我所有的机器上分配作业。
有没有办法确保 GNU Parallel 的并发执行遵守外部调用中指定的 --jobs
子句?或者通过其他方式来限制并行调用中的作业总数?例如:我希望下面输出中的内槽始终为 1
,即输出第三行的 slot 1-2
违反了条件。
~• inner_par="parallel -I // --slotreplace '/%/' --seqreplace '/#/'"
~• cmd='echo id {#}-/#/, slot {%}-/%/, arg {}-//'
~• seq 2 | parallel -j 1 "seq {} | $inner_par $cmd"
id 1-1, slot 1-1, arg 1-1
id 2-1, slot 1-1, arg 2-1
id 2-2, slot 1-2, arg 2-2
~•
您在寻找 sem
吗?
parallel -j 10 parallel -j 20 sem -j 30 --id myid mycmd
这将开始 200 sem
秒,但只有 运行 30 mycmd
并行。