Я пытаюсь обрабатывать ввод разными способами параллельно, записывая получающиеся строки по мере их поступления. Мой текущий подход заключается в следующем:
# process_parallel.sh
read input
parallel --colsep ' ' --linebuffer 'echo $input | {}' \
::: 'python process1.py' ./process2.sh ./process3
Контекст сводится к чему-то вроде этого:
(sleep 1; echo "short input arriving late") | ./process_parallel.sh | ./collate_results.sh
Вышеописанное работает, но имеет один важный недостаток: процессы не запускаются, пока ввод не будет прочитан. Я хочу запустить их немедленно, так как это может занять некоторое время, а затем подключить параллельный канал к каждому из них.
Как мне этого добиться?