我有一个任务来处理 stdin 上的文件列表。程序的启动时间很长,每个文件所用的时间差异很大。我想生成大量这样的进程,然后将工作分派给不忙的进程。有几种不同的命令行工具几乎可以满足我的要求,我将其缩小到两个几乎可以工作的选项:
find . -type f | split -n r/24 -u --filter="myjob"
find . -type f | parallel --pipe -u -l 1 myjob
Run Code Online (Sandbox Code Playgroud)
问题是split做一个纯循环,所以其中一个进程落后又落后,延迟了整个操作的完成;虽然parallel想要每 N 行或每字节输入产生一个进程,但我最终在启动开销上花费了太多时间。
是否有类似的东西可以将流程和馈送线重用于已解锁标准输入的任何流程?