在Ubuntu 14.04上,我有一些Python脚本需要在一系列输入上运行。其中一些可以并行运行,因此我将它们作为后台进程从bash脚本启动(下面)。
for m in `seq 3 7`;
do
python script_1.py $m
for a in `seq 1 10 201`;
do
for b in `seq 0 9`;
do
t=$(($a + $b))
python script_2.py $m $t &
done
wait
done
done
所以我想分批运行Python脚本,然后等到整个批处理结束,然后转到下一批10,这样wait
命令。
但是,我发现当我运行这个bash脚本时,script_2.py会在前20个输入值上运行,而不仅仅是前10个,作为后台进程。此外,在第一批20后,脚本继续根据需要以10个批次执行。是否有明显的原因发生这种情况,以及我如何阻止它这样做?
干杯!
答案 0 :(得分:2)
我的代码中没有看到任何错误。我想到的唯一可能的解释是,你的script_2.py的前10次执行几乎立即退出,这样你就会有第一次并行执行20个实例的印象。我将一些调试代码添加到您的脚本中以检查这一点。类似的东西:
...
for b in {0..9} ; do
t=$(($a + $b))
echo "now running script_2.py with t=${t}" >> mylog.txt
python script_2.py $m $t &
done
echo "now waiting..." >> mylog.txt
wait
...