2016-11-21 77 views
6

我有一个程序可以生成大量(兆兆字节)的输出并将其发送到标准输出。并行分割文本和进程

我想拆分该输出并与其他程序的一堆实例并行处理。只要线条保持不变,它可以以任何方式分发。

并行能做到这一点,但它需要线条固定数量和restartes在此之后,过滤过程:

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

有没有一种方法来保持的进程恒定数量的运行和分发数据当中?

回答

2

-l对性能没有好处。如果可能,请使用​​。

您可以将数据分配给roundrobin:--roundrobin

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

使用此命令可生成过滤器进程,但一次只能运行一个。其他人正在等待投入。 – Craden

+0

然后relgen生成得太慢:将3M降低到0.3M –

+0

relgen生成速度足以保持所有32个过滤器实例在运行。仍然与0.3M相同的行为。 – Craden