Как говорит @Barmar, ./mycode
запускается для каждого блока в вашем примере.
Но так как вы не используете -k
в своем примере, вы можете использовать --round-robin
.
... | parallel -j 8 --spreadstdin --round-robin --block $sz ... ./mycode
Это запустится 8 ./mycode
с (но не по одному на блок) и даст блоки любому процессу, который готов к чтению.
Этот пример показывает, что процессу дается больше блоков11 и 10, чем процессы 4 и 5, потому что 4 и 5 читают медленнее:
seq 1000000 |
parallel -j8 --tag --roundrobin --pipe --block 1k 'pv -qL {}0000 | wc' ::: 11 4 5 6 9 8 7 10