穷人的 GNU Parallel 在 ksh 中实现?

Nit*_*ist 8 ksh gnu parallelism gnu-parallel

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

或者也许是xargs?

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

max*_*zig 6

如果要在具有多个内核的机器上并行化,则可以使用 (GNU) xargs,例如:

echo seq_[0-9][0-9].gz | xargs -n 1 -P 16 ./crunching
Run Code Online (Sandbox Code Playgroud)

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

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

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

PS: GNU 并行手册还包括与其他工具的一些比较,包括xargsmake,有趣的是他们写道:

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