【问题标题】:How do xargs and gnu parallel differ when parallelizing code?并行化代码时,xargs 和 gnu 并行有何不同?
【发布时间】:2020-10-12 03:02:07
【问题描述】:

这是一个基本问题。我很好奇 并行化代码时,xargs 和 gnu parallel 有何不同?

是否存在您会使用其中一个而不是另一个的用例?

我之所以问这个问题是因为我已经看到社区认为使用任何一种工具都可以接受的并行化问题的答案。

【问题讨论】:

  • 这个问题的答案可能非常有争议,其他人的里程可能会有所不同(非常),但恕我直言,GNU Parallel 更强大、更灵活、更可配置且有能力,但是不太可能出现在任何给定的系统上。 POSIX 倡导者可能有不同的看法。阅读本文后自行决定google.com/…

标签: unix xargs gnu-parallel


【解决方案1】:

其中一些差异包括: https://www.gnu.org/software/parallel/parallel_alternatives.html#DIFFERENCES-BETWEEN-xargs-AND-GNU-Parallel

Tl;dr:xargs 更快,因为几乎没有开销(~0.3 ms/job 与 GNU Parallel 的 ~3 ms/job 相比)。 GNU Parallel 更安全,因为它采取了各种预防措施,因此您无需担心(例如,并行运行的两个作业的输出不会混合)。 GNU Parallel 有很多 xargs 没有的特性。 GNU Parallel 需要 Perl,xargs 不需要。 xargs 无处不在,GNU Parallel 要求您使用--embed 来确保它无处不在。

一般来说:如果主要关注的是避免开销(例如,如果您的作业需要几毫秒来运行每个)或避免安装 Perl(例如,如果您的系统是嵌入式的,因此资源紧张),那么使用 xargs(和根据您的输入/输出采取相关的预防措施)。

全面披露:我对 GNU Parallel 有既得利益。

【讨论】:

  • 请注意,迄今为止,Perl 自动包含在所有版本的 macOS 中 - 因此 Perl 在 Mac 上并不是一项繁重的要求。
  • 非常感谢。这是一个有用的答案。我将浏览差异页面。不过,我有一个问题,“xargs 无处不在”是怎么回事?
  • @KleberNoel 它是 POSIX 标准的一部分。
猜你喜欢
  • 2012-04-05
  • 2014-03-11
  • 2017-09-27
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多