Con GNU Parallel faresti:
parallel script-to-run.sh input/ output/ {} ::: {0..99}
Aggiungere -P8
se non si desidera eseguire un lavoro per core della CPU.
Al contrario xargs
, farà La cosa giusta, anche se l'input contiene spazio, 'o "(non è il caso qui, però). Inoltre si assicura che l'output di lavori diversi non venga mischiato insieme, quindi se usi l'output sei garantito che non otterrai mezza riga da due lavori diversi.
GNU Parallel è un parallelizzatore generale e rende facile eseguire lavori in parallelo sulla stessa macchina o su più macchine a cui si ha accesso ssh.
Se hai 32 lavori diversi che desideri eseguire su 4 CPU, un modo semplice per parallelizzare è eseguire 8 lavori su ogni CPU:
GNU Parallel invece genera un nuovo processo quando uno finisce, mantenendo le CPU attive e risparmiando così tempo:
Installazione
Se GNU Parallel non è pacchettizzato per la tua distribuzione, puoi eseguire un'installazione personale, che non richiede l'accesso come root. Può essere fatto in 10 secondi in questo modo:
$ (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
Per altre opzioni di installazione vedere http://git.savannah.gnu.org/cgit/parallel.git/tree/README
Per saperne di più
Vedi altri esempi: http://www.gnu.org/software/parallel/man.html
Guarda i video introduttivi: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Segui il tutorial: http://www.gnu.org/software/parallel/parallel_tutorial.html
Iscriviti alla mailing list per ottenere supporto: https://lists.gnu.org/mailman/listinfo/parallel