我有一个生成大量(太字节)输出的程序并将其发送到stdout。
我希望将该输出拆分并与另一个程序的一堆实例并行处理。它可以以任何方式分发,只要线条保持完整。
并行可以执行此操作,但它需要固定数量的行并在此之后重新启动过滤器进程:
./relgen | parallel -l 100000 -j 32 --spreadstdin ./filter
是否有办法保持一定数量的进程在其中运行并在其中分发数据?
答案 0 :(得分:2)
-l
对表现不利。如果可能,请使用--block
。
您可以将数据分发为:--roundrobin
。
./relgen | parallel --block 3M --round-robin -j 32 --pipe ./filter