Con GNU Parallel haría:
parallel script-to-run.sh input/ output/ {} ::: {0..99}
Agregue -P8
si no desea ejecutar un trabajo por núcleo de CPU.
En el lado opuesto xargs
, hará lo correcto, incluso si la entrada contiene espacio, 'o "(aunque no es el caso aquí). También se asegura de que la salida de diferentes trabajos no se mezclen, por lo que si usa la salida, está garantizado que no obtendrá media línea de dos trabajos diferentes.
GNU Parallel es un paralelizador general y facilita la ejecución de trabajos en paralelo en la misma máquina o en varias máquinas a las que tiene acceso ssh.
Si tiene 32 trabajos diferentes que desea ejecutar en 4 CPU, una forma sencilla de paralelizar es ejecutar 8 trabajos en cada CPU:
GNU Parallel, en cambio, genera un nuevo proceso cuando uno termina, manteniendo las CPU activas y ahorrando tiempo:
Instalación
Si GNU Parallel no está empaquetado para su distribución, puede realizar una instalación personal, que no requiere acceso de root. Se puede hacer en 10 segundos haciendo esto:
$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 67bd7bc7dc20aff99eb8f1266574dadb
12345678 67bd7bc7 dc20aff9 9eb8f126 6574dadb
$ md5sum install.sh | grep b7a15cdbb07fb6e11b0338577bc1780f
b7a15cdb b07fb6e1 1b033857 7bc1780f
$ sha512sum install.sh | grep 186000b62b66969d7506ca4f885e0c80e02a22444
6f25960b d4b90cf6 ba5b76de c1acdf39 f3d24249 72930394 a4164351 93a7668d
21ff9839 6f920be5 186000b6 2b66969d 7506ca4f 885e0c80 e02a2244 40e8a43f
$ bash install.sh
Para conocer otras opciones de instalación, consulte http://git.savannah.gnu.org/cgit/parallel.git/tree/README
Aprende más
Ver más ejemplos: http://www.gnu.org/software/parallel/man.html
Vea los videos de introducción: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Siga el tutorial: http://www.gnu.org/software/parallel/parallel_tutorial.html
Regístrese en la lista de correo electrónico para obtener soporte: https://lists.gnu.org/mailman/listinfo/parallel