我想在一个 bash 文件中运行一个多并行任务,如下面的示例代码,
for i in 1 2 3 4 5 6 7 8; do
setsid python /tmp/t.py ${i} 1>>/tmp/1.log 2>&1 &
done
wait # first wait
echo "next wait"
for i in 9 10 11 12 13 14 15 16; do
setsid python /tmp/t.py ${i} 1>>/tmp/1.log 2>&1 &
done
wait # second wait
如您所见,wait
可以这样做吗?我想运行前 8 个任务,然后wait
完成所有任务,然后生成接下来的 8 个任务,因为 RAM 有限,我无法在一轮中运行所有 16 个任务。
使用 option
-w
或--wait
tosetsid
以便 setsid 命令等到 python 进程结束后再结束。这意味着 shellwait
命令现在有子进程等待。像这样的东西:
使用 GNU Parallel,它看起来像这样: