It’s more like a trick, but it’s better than repeat the same operation linearly. Some explanations:
TH_NUM=`ps aux | grep Python | grep -v "grep" | wc -l`
- TH_MAX is the maximum number of “threads” that can be executed at the same time.
- The first
grep
selects the threads that make use ofpython
(you can change this, it depends on your script) - The second
grep
excludes the command you issued above 😉 wc
counts the number of lines. The first time the result of the pipe is empty, sowc
gives “0” as result.
#!/bin/bash
TH_MAX=10
for sample in `ls ./data`
do
while [ TRUE ]; do
TH_NUM=`ps aux | grep Python | grep -v "grep" | wc -l`
if [ "$TH_NUM" -le "$TH_MAX" ]
then
echo $( ./analyze_sample.py -s ${sample} ) > /dev/null &
echo -en " ${sample} "
break
else
echo -en "."
sleep 1
fi
done
done