5

嵌套调用的正确方法是GNU parallel什么?

愚蠢的例子:

seq 1 100 | parallel echo {} | parallel seq {} 1000

我的理解是,在一个 8-CPU 机器上,每个并行将启动 8 个作业,总共 64 个作业。如果您要调用的内容比seq这更重要,则可能会使框超载。有没有办法限制作业数量但仍然充分利用并行性?

4

1 回答 1

1

使用 -j 限制外部或内部平行:

seq 1 100 | parallel -j1 "echo {} | parallel -I // seq // 1000"

通常您可以使用多个 :::: 或 ::: 来表达嵌套命令,如下所示:

parallel seq {1} {3} {2} :::: <(seq 10) <(seq 20 30) ::: 1 2 3

这样做会更好,因为您将始终保持 8 个作业运行,而在上述情况下,在 8 核机器上运行的作业少于 8 个。

于 2014-05-02T17:42:22.287 回答