gue*_*est 3 bash job-control parallelism
我遇到过一些类似的情况,我可以将单核绑定任务分成多个部分,并在 bash 中将每个部分作为单独的作业运行以使其并行化,但我很难将返回的数据整理回单个数据溪流。到目前为止,我的天真的方法必须创建一个临时文件夹,跟踪 PID,让每个线程将其 pid 写入一个文件,然后一旦所有作业完成,读取所有 pid 并将它们按照 PID 生成的顺序合并到一个文件中。有没有更好的方法使用 bash/shell 工具来处理这种多进一出的情况?
到目前为止,我的天真的方法必须创建一个临时文件夹,跟踪 PID,让每个线程将其 pid 写入一个文件,然后一旦所有作业完成,读取所有 pid 并将它们按照 PID 生成的顺序合并到一个文件中。
这几乎正是 GNU Parallel 所做的事情。
parallel do_stuff ::: job1 job2 job3 ... jobn > output
Run Code Online (Sandbox Code Playgroud)
还有一些额外的好处:
--keep-order
.--line-buffer
.GNU Parallel 有很多功能可以将任务分割成更小的作业。也许您甚至可以使用其中之一来创造较小的工作岗位?