stringtranslate.com

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 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

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 .

Enlaces externos