拆分文本并并行处理

Split up text and process in parallel

我有一个生成大量(TB)输出并将其发送到标准输出的程序。

我想拆分该输出并与另一个程序的一堆实例并行处理它。可以用任何方式分发,只要线路完好无损。

并行可以做到这一点,但它需要固定数量的行并在这之后重新启动过滤过程:

./relgen | parallel -l 100000 -j 32 --spreadstdin ./filter

有没有办法保持恒定数量的进程运行并在它们之间分发数据?

-l 不利于性能。尽可能使用 --block

您可以通过以下方式让数据分布式循环:--roundrobin

./relgen | parallel --block 3M --round-robin -j 32 --pipe ./filter