parallel-processing - GNU 并行 : does -k (keep output order) affect speed?

标签 parallel-processing gnu-parallel

正如标题所说,我想知道 -k选项(强烈)影响 GNU 并行的速度。

man parallel_tutorial有关于--ungroup的讨论和 --line-buffer , 声称 --linebuffer ,它分离输出行,比 --ungroup 慢得多.所以也许-k当工作数量很大时也会导致严重放缓吗?

(我没有在 man parallelman 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/

相关文章:

parallel-processing - MATLAB 并行计算工具箱 - 并行化与 GPU?

bash - 拆分文本并并行处理

bash - 仅在 gnu 并行运行所有作业后才执行命令

python - 简单的 dask map_partitions 示例

java - 为什么不能并行减少流流?/流已经被操作或关闭

bash - 如何向 GNU Parallel 提供大量命令?

bash - 寻找 AWK 替代方案来加速此命令

multithreading - 如何使用 GNU Parallel 编写多核排序

c# - 执行 Parallel.For 从 Array 计算数据的正确方法

python - 使用多处理并行运行 rpy2 会引发无法捕获的奇怪异常