Isso deve ter um comentário, mas os comentários são muito pequenos.
Certifique-se de que sua solução funcione para a saída de tamanhos arbitrários e não combine a saída de um trabalho com outro. Aqui está um pequeno exemplo para testar isso:
#!/bin/bash
# stress test of parallelizing programs
longline() {
# print one big line with 'a's followed by 'b's followed by 'c's
perl -e 'print "@ARGV ", map { "$_"x10000000 } (a..c)' "$@"
echo
}
echo "Run testprogram in parallel"
for a in $(seq 1 3)
do
for b in 0.1 0.2
do
longline $a $b &
done
done |
# use 'tr' to compress many 'a's into a single 'a'
# if the output is not 'abc' on every line, lines have been mixed
tr -cs '@'
echo "Run testprogram in serial"
for a in $(seq 1 3)
do
for b in 0.1 0.2
do
longline $a $b
done
done | tr -cs '@'
echo "Compare with GNU Parallel"
export -f longline
parallel -kj0 longline :::: <(seq 1 3) ::: 0.1 0.2 | tr -cs '@'