Diferentes ejemplos de trabajos paralelos
En esta parte del tutorial se muestran las diferentes formas de ejecutar los trabajos paralelos utilizando el bucle 'for'.
Ejemplo 1: Ejecute los trabajos paralelos utilizando el bucle 'For'
Usar el bucle 'for' es la forma más sencilla de realizar los trabajos paralelos en el script Bash. Cree un archivo Bash con el siguiente script que ejecuta el bucle 'for' 10000 veces e imprime un número después de la iteración de 1000 veces. Esta tarea se realiza en paralelo utilizando el bucle 'for'.
#!/bin/bash
#Itera el bucle hasta que llegue a 10000
para valor en ` secuencia 0 1000 10000 ` ;
hacer
#Imprimir cada número 1000
eco valor de $
hecho
El siguiente resultado aparece después de ejecutar el script. Hay 10 números entre 0 y 10000 que se imprimen en la salida:
Ejemplo 2: Ejecute los trabajos paralelos utilizando el bucle 'For' anidado
Cree un archivo Bash con el siguiente script que ejecuta el bucle 'for' anidado que genera el número de serie usando los caracteres alfabéticos de 'A' a 'C' y los números 1 a 3. En la primera iteración del bucle externo y después completando la iteración del ciclo interno, “A1. CodeIgniter”, “A2. Laravel” y “A3. CakePHP” están impresos. En la segunda iteración del ciclo externo y después de completar la iteración del ciclo interno, “B1. Oráculo”, “B2. MySQL” y “B3. SQL” están impresos. En la tercera iteración del ciclo externo y después de completar la iteración del ciclo interno, “C1. CSS”, “C2. JQuery” y “C3. JavaScript” están impresos.
#Bucle exterior
para alfa en { C.A }
hacer
#bucle interior
para número en { 1 .. 3 }
hacer
#Imprimir la salida en función de la condición
si [ $alfa == 'A' ] ; entonces
lista de arreglo = ( 'Código Igniter' 'Laravel' 'PastelPHP' )
elif [ $alfa == 'B' ] ; entonces
lista de arreglo = ( 'Oráculo' 'MySQL' 'SQL' )
elif [ $alfa == 'C' ] ; entonces
lista de arreglo = ( 'CSS' 'JQuery' 'JavaScript' )
ser
eco ' $alfa $número . ${arrayList[$número-1]} '
hecho
hecho
El siguiente resultado aparece después de ejecutar el script:
Ejemplo 3: Ejecute los trabajos en paralelo usando el bucle 'For' y el comando 'Wait'
El comando 'esperar' es un comando muy útil de Bash que se usa para esperar a que un trabajo complete la tarea cuando se están ejecutando varios trabajos. Si se están ejecutando menos trabajos, el comando 'esperar' inicia un nuevo trabajo de forma asíncrona. Cree un archivo Bash con el siguiente script que ejecuta un trabajo en segundo plano dentro del bucle 'for' anidado. El comando 'esperar' se usa para esperar a que se completen todos los procesos secundarios. Los comandos 'date' y 'sleep' se ejecutan como proceso en segundo plano.
#Bucle exteriorpara i en { 1 .. 2 }
hacer
#bucle interior
para j en { 1 .. 3 }
hacer
si prueba ' $(empleos | wc -l) ' -ge 2 ; entonces
esperar -norte
ser
#Proceso en segundo plano
{
fecha
dormir 1
} &
hecho
hecho
El siguiente resultado aparece después de ejecutar el script. La fecha y la hora actuales se imprimen 6 veces desde el proceso en segundo plano para iterar los bucles 'for' anidados 2 × 3 = 6 veces:
Ejemplo 4: diferencias entre ejecuciones secuenciales y paralelas
Cree un archivo Bash con el siguiente script que muestra las diferencias entre la ejecución secuencial y la ejecución en paralelo. La función prn_char() está definida en el script para imprimir cinco caracteres con una duración de 0,5 segundos. A continuación, el primer bucle 'for' se usa para ejecutar la función prn_char() secuencialmente. El segundo bucle 'for' se usa para ejecutar la función prn_char() en paralelo.
#Definir una función para imprimir 5 caracteres con 0.5 segundos de duraciónprn_char ( ) {
para C en Hola; hacer
dormir 0.5 ;
eco -norte $c ;
hecho
eco
}
#Ejecutar la función usando for loop secuencialmente
para afuera en { 1 .. 3 } ; hacer
prn_char ' $fuera '
hecho
#Ejecuta la función usando for loop en paralelo
para afuera en { 1 .. 3 } ; hacer
prn_char ' $fuera ' &
hecho
El siguiente resultado aparece después de ejecutar el script. La diferencia entre la ejecución secuencial y la ejecución en paralelo se muestra en la salida. Aquí, todos los caracteres del ciclo 'for' de la función prn_char() se imprimen a la vez en la ejecución secuencial y cada carácter se imprime tres veces en la ejecución paralela:
Conclusión
La ejecución de los trabajos paralelos mediante el bucle 'for' es necesaria para muchos propósitos de programación. En este tutorial se muestran los métodos para ejecutar los trabajos paralelos mediante el bucle 'for'.