穷人的 GNU Parallel 在 ksh 中实现?

穷人的 GNU Parallel 在 ksh 中实现?

我想使用以下功能GNU并行它可以执行命令和并行输入的列表,并在完成后将其吐出,但是,我不想在所有服务器上并行安装 GNU。

或者也许是并行版本xargs

是否有 GNU Parallel 功能的 ksh 实现?在这种情况下,不必像 GNU Parallel 那样按顺序完成——只要所有输出都可以通过管道传输或存储即可。我还想避免使用临时文件。

答案1

如果你想在多核机器上并行化,你可以使用 (GNU) xargs,例如:

echo seq_[0-9][0-9].gz | xargs -n 1 -P 16 ./crunching

含义:xargs并行启动最多 16 个进程,./crunching每个进程使用来自 stdin 的 1 个令牌。

您还可以split与 xargs 结合使用。

或者您可以创建一个简单的 Makefile 用于作业执行和调用make -f mymf -j $CORES(此解决方案需要临时文件)。

附:GNU 并行手册还包括一些与其他工具的比较,包括参数制作,有趣的是他们写道:

(GNU 并行的早期版本恰好是使用 make -j 实现的)。

答案2

查看parallel --embed哪个将 GNU Parallel 嵌入到您使用它的同一个 shell 脚本中。

parallel --embed > new_script

然后编辑 new_script.

相关内容