Eu gostaria de usar o recurso GNU paralelo, onde ele pode executar o comando e a lista que é alimentada em paralelo e cuspir depois que tudo estiver pronto, no entanto, não quero instalar o GNU paralelo em todos os nossos servidores.
Ou talvez uma versão paralela de xargs
?
Existe uma implementação ksh do que o GNU Parallel faz? Nesse caso, isso não precisa ser feito da mesma forma que o GNU Parallel - desde que toda a saída possa ser canalizada ou armazenada. Eu também gostaria de evitar o uso de arquivos temporários.
ksh
gnu
parallelism
gnu-parallel
Nitrodista
fonte
fonte
Respostas:
Se você deseja paralelizar em uma máquina com vários núcleos, você pode apenas usar (GNU)
xargs
, por exemplo:Significado:
xargs
inicia até 16 processos paralelamente ao./crunching
uso de 1 token do stdin para cada processo.Você também pode usar
split
em combinação com xargs.Ou você pode criar um Makefile simples para execução e chamada de trabalho
make -f mymf -j $CORES
(você precisa de arquivos temporários para esta solução).PS: O manual paralelo GNU também inclui algumas comparações com outras ferramentas, incluindo xargs e make , curiosamente elas escrevem:
fonte
xargs
é notoriamente ruim nisso quando executado em paralelo porque a saída pode se misturar.Veja
parallel --embed
quais incorporam o GNU Parallel no mesmo script de shell do qual você o usa.depois edite new_script.
fonte