Bienvenido a la web de la Oficina del Software Libre y Conocimiento Abierto de la Universidad de Cádiz

Paralelización de procesos desde consola

Vía Barrapunto

Cuando estamos en consola y queremos aplicar un comando a muchos ficheros, normalmente hacemos un bucle secuencia. Por ejemplo, para descomprimir ficheros:

ls *.bz2 | while read i; do bzip2 -d $i && j=`basename $i .bz2` && xz -9 $j; done

Si queremos usar las múltiples líneas de ejecución de nuestro sistema podemos usar GNU parallel. En nuestro ejemplo:

ls *.bz2 | time parallel -j+0 --eta 'bzcat {} | xz -9 > {.}.xz'

De este modo se lanza un bzcat por cada línea de ejecución.

Nótese que lo normal (en este ejemplo concreto) es que el cuello de botella pase del procesamiento a la entrada/salida (sobre todo si usamos discos externos USB).

Distribuir contenido