Articulo de referencia

GNU paralelo

GNU Parallel es una utilidad de línea de comandos para Linux y otros sistemas operativos tipo Unix que permite al usuario ejecutar scripts de shell o comandos en paralelo . GNU ...

GNU Parallel es una utilidad de línea de comandos para Linux y otros sistemas operativos tipo Unix que permite al usuario ejecutar scripts de shell o comandos en paralelo . GNU Parallel es un software libre , escrito por Ole Tange en Perl . Está disponible bajo los términos de la GPLv3 . [2]

Uso

Vídeo de introducción, parte 1
Vídeo de introducción, parte 2

El uso más común es reemplazar el bucle de la carcasa, por ejemplo

mientras lee x ; hacer hacer_algo " $x " hecho < lista
    
     
  

A la forma de

 lista de gatos | hacer_algo
 en paralelo   

donde el archivo listcontiene argumentos para do_somethingy donde process_outputpuede estar vacío.

Los scripts que utilizan paralelo suelen ser más fáciles de leer que los scripts que utilizan pexec .

El programa también cuenta con funciones paralelas

  • agrupación de la salida estándar y el error estándar para que las salidas de los trabajos que se ejecutan en paralelo no se ejecuten juntas;
  • manteniendo el orden de salida para que siga siendo el mismo orden que la entrada;
  • manejar adecuadamente nombres de archivos que contienen caracteres especiales como espacios, comillas simples, comillas dobles, ampersand y caracteres codificados en UTF-8;

De forma predeterminada, paralelo ejecuta tantos trabajos en paralelo como núcleos de CPU .

Ejemplos

buscar  .  -nombre "*.foo" | grep paralelo bar
     

Lo anterior es el equivalente paralelo a:

buscar  .  -name "*.foo" -exec grep bar {} +
      

Esta función busca en todos los archivos del directorio actual y sus subdirectorios cuyo nombre termine en .foolas apariciones de la cadena bar . El comando paralelo funcionará como se espera a menos que un nombre de archivo contenga una nueva línea . Para evitar esta limitación, se puede utilizar:

buscar  .  -nombre "*.foo" -print0 | paralelo -0 grep bar
       

El comando anterior utiliza el carácter nulo para delimitar los nombres de archivos.

buscar  .  -nombre "*.foo" | paralelo -X mv {} /tmp/trash
       

El comando anterior se expande {}con tantos argumentos como lo permita la longitud de la línea de comandos y los distribuye de manera uniforme entre trabajos paralelos si es necesario. Esto puede reducir la sobrecarga del proceso para comandos de corta duración que tardan menos tiempo en finalizar que en iniciarse.

buscar  .  -maxdepth 1 -type f -name "*.ogg" | paralelo -X -r cp -v -p {} /home/media
              

El comando anterior hace lo mismo que:

cp  -v  -p  *.ogg  /inicio/medios

Sin embargo, el comando anterior que usa find// es más eficiente en paralleltérminos cpde recursos y no se detendrá con un error si la expansión de *.ogg es demasiado grande para el shell.

Véase también

Referencias

  1. ^ Tange, Ole (22 de mayo de 2023). «GNU Parallel 20230522 ('Charles') publicado [estable]». parallel (Lista de correo).
  2. ^ "GNU Paralelo". GNU.org .
  • Sitio web oficial
  • Página del proyecto y página del manual de GNU Parallel
Obtenido de "https://es.wikipedia.org/w/index.php?title=GNU_paralelo&oldid=1235789628"