En la actualidad es frecuente contar con CPUS que poseen múltiples cores y, existen ocasiones en las que necesitamos ejecutar un comando sobre un conjunto de ficheros. Así que, el problema está claro: ¿Cómo paralelizar estas ejecuciones de manera de utilizar simultaneamente todos los cores de nuestro sistema?
Para esto, podemos utilizar el comando parallel
. en los sistemas basados en Debian/Ubuntu, este comando no suele estar instalado por defecto pero puede incorporarse fácilmente a través del comando sudo apt install parallel
.
Una vez instalado el comando podemos utilizar el comando man parallel
para ver todas las opciones de uso pero, si estamos acostumbrados a utilizar xargs
o la opción -exec
del comando find
quizás nos baste sólo con saber que la opción -j n
(donde n es un número entero) indica la cantidad de comandos a lanzar simultaneamente hasta agotar la lista de argumentos.
$ ls *.py | parallel -j4 sha256sum When using programs that use GNU Parallel to process data for publication please cite: O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47. This helps funding further development; and it won't cost you a cent. Or you can get GNU Parallel without this requirement by paying 10000 EUR. To silence this citation notice run 'parallel --bibtex' once or use '--no-notice'. 40908b7568fb43391ed63dd802eafc6fdbe9e4787985c5888461dafa798dbfbe error.py e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 __init__.py 8e36a634a1864ab0af53e317b051fe4931695e11500c84c98e0f29bb0c963a18 __main__.py 07a3f2cdb88c96553690e2c6e101a7eaddf2bc7ecdbab4c2b97849f6d6884452 shuffler.py b3c44ab5b0a5c3a13fc67834852aa94775247508eabdf224de570e18ecc937ab solver.py c31187ae830afb74efec76bbe943ec40d694f92b42ea2fc1be4a06d7691d0391 values.py
$ ls *.py | parallel -j4 wc {} When using programs that use GNU Parallel to process data for publication please cite: O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47. This helps funding further development; and it won't cost you a cent. Or you can get GNU Parallel without this requirement by paying 10000 EUR. To silence this citation notice run 'parallel --bibtex' once or use '--no-notice'. 24 68 580 error.py 0 0 0 __init__.py 110 231 3205 __main__.py 173 565 5776 shuffler.py 1530 4681 49889 solver.py 756 2307 24078 values.py