正如标题所说,我想知道 -k
选项(强烈)影响 GNU 并行的速度。
在 man parallel_tutorial
有关于--ungroup
的讨论和 --line-buffer
, 声称 --linebuffer
,它分离输出行,比 --ungroup
慢得多.所以也许-k
当工作数量很大时也会导致严重放缓吗?
(我没有在 man parallel
或 man parallel_tutorial
中找到这个主题;我也没有在谷歌上找到任何东西。我还没有完成 man parallel
,所以如果我错过了一些搜索较少的东西,请原谅。)
最佳答案
-k
不会减慢任何速度,但每个作业需要 4 个文件句柄。如果 GNU Parallel 用完文件句柄,它将一直等到正在运行的作业之一完成。-g
与 -u
相比每个作业减慢大约 1-2 毫秒(加上从磁盘写入和读回输出所需的时间),因此只有当您运行非常短的作业或具有大量输出的作业时,减慢才会明显。--line-buffer
可以比 -g
更快也可以更慢.它不会在磁盘上缓冲,但需要更多的 CPU 时间来运行 - 特别是如果您的作业输出数据很慢。
我的建议是使用对您来说最容易使用的方法,并且只有在证明速度太慢时,才考虑其他选项。
关于parallel-processing - GNU 并行 : does -k (keep output order) affect speed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23577047/