How to limit number of threads/sub-processes used in a function in bash

后端 未结 6 1704
甜味超标
甜味超标 2020-11-27 03:32

My question is how change this code so it will use only 4 threads/sub-processes?

TESTS=\"a b c d e\"

for f in $TESTS; do
  t=$[ ( $RANDOM % 5 )  + 1 ]
  sl         


        
6条回答
  •  眼角桃花
    2020-11-27 04:05

    I have found another solution for this question using parallel (part of moreutils package.)

    parallel -j 4 -i bash -c "echo start {}; sleep 2; echo done {};" -- $(seq 10)
    

    -j 4 stands for -j maxjobs

    -i uses the parameters as {}

    -- delimits your arguments

    The output of this command will be:

    start 3
    start 4
    start 1
    start 2
    done 4
    done 2
    done 3
    done 1
    start 5
    start 6
    start 7
    start 8
    done 5
    done 6
    start 9
    done 7
    start 10
    done 8
    done 9
    done 10
    

提交回复
热议问题