Eu quero executar uma tarefa multiparalela em um arquivo bash como o código de exemplo abaixo,
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
Como você pode ver, é wait
possível fazer isso? Eu quero executar as primeiras 8 tarefas e, em seguida, wait
todas as tarefas para terminar e, em seguida, gerar as próximas 8 tarefas porque a RAM é limitada, não posso executar todas as 16 tarefas em uma rodada.
Use a opção
-w
ou--wait
parasetsid
que o comando setsid espere até que o processo python termine antes de terminar. Isso significa que o comando shellwait
agora tem processos filhos para aguardar.Algo assim:
Com o GNU Parallel, fica assim: