Estoy tratando de procesar la entrada de diferentes maneras en paralelo, escribiendo las líneas resultantes a medida que entran. Mi enfoque actual es este:
# process_parallel.sh
read input
parallel --colsep ' ' --linebuffer 'echo $input | {}' \
::: 'python process1.py' ./process2.sh ./process3
El contexto se reduce a algo como esto:
(sleep 1; echo "short input arriving late") | ./process_parallel.sh | ./collate_results.sh
Lo anterior funciona pero tiene un inconveniente importante: los procesos no se inician hasta que se haya leído la entrada. Quiero iniciarlos de inmediato, ya que eso puede llevar un tiempo, luego hacer que la tubería paralela sea completamente estándar para cada uno de ellos.
¿Cómo lo logro?
fuente