Cómo implementar Python Thread Join en un script
En este ejemplo, usaremos el “método thread.join()” de Python para combinar dos hilos. Un subproceso es un flujo de procesamiento único. Esto implica que habrá dos eventos simultáneos en su programa. Sin embargo, la mayoría de las implementaciones de Python solo dan la impresión de que varios subprocesos se ejecutan al mismo tiempo. Un beneficio clave de emplear subprocesos es que una aplicación multiproceso funcionará en un sistema de procesador de un solo procesador mientras utiliza automáticamente un sistema multiprocesador sin necesidad de recompilación. La programación con muchos subprocesos separados ayuda a implementar algoritmos paralelos.
El método join() de la clase Thread permite que un hilo se retrase hasta que otro hilo haya terminado de ejecutarse. Cuando se llama a thread.join(), se asegurará de que se detenga incluso antes de que el programa ejecute la siguiente instrucción: si es una instancia de Thread cuyo hilo se está ejecutando actualmente.
Comencemos a implementar el script en la herramienta “spyder” implementando el código. Una gran herramienta para compilar código Python es Spyder. Spyder tiene una ejecución de programa dinámica, lo que le brinda nuevas habilidades para la resolución de problemas. También se puede utilizar para crear análisis utilizando información y para lograr objetivos de gestión de datos. Para iniciar el código, la primera línea importa el módulo “threading”. En la línea siguiente se crea un método con el identificador “func1”. Los métodos simples definidos por el usuario son técnicas que puede usar para organizar su script dentro del cuerpo de un programa. Aquí, diseñamos uno.
Una vez definida, una función se puede usar de manera similar a como se usan las acciones construidas y los procesos de análisis. Las variables se envían por referencia a funciones en lugar de por valor. Las variables “dividendo” y “divisor” se proporcionaron como parámetros para “func1” entre paréntesis. Luego, la declaración se imprimió usando la función “imprimir ()” en la siguiente línea. La función print() muestra el mensaje en la pantalla o en otro dispositivo de salida común. El objeto se transformará en una cadena antes de mostrarse en el monitor y la frase puede ser una cadena o quizás otro elemento. La instrucción “vamos a empezar” se pasa a la función “imprimir()”, y se aplica una condición “Si” para determinar si el dividendo dividido por el divisor es equivalente a “cero”, en cuyo caso se imprime “verdadero” o si escribe “falso”. La palabra “fin” se pasa cuando invocamos el método “imprimir ()” una vez más. Luego, en la siguiente línea, usamos “threading.thread” para crear dos hilos. Dentro de su paréntesis, ejecutamos la función mientras también pasamos los valores de dividendo y divisor, que son “15” y “3”, como sus parámetros.
Luego se repite un procedimiento similar en la siguiente línea, esta vez ejecutando la función con un hilo y entregándole los valores “21” y “2” para el dividendo y el divisor como argumentos. El primer subproceso se mantiene en la variable “subproceso 1”, mientras que el segundo subproceso se mantiene en la variable inicializada “subproceso 2”. La siguiente línea usa el método “start()” y “thread 1” para comenzar la ejecución del hilo. El sistema operativo iniciará el proceso en un nuevo subproceso tan pronto como pueda después de que el método “start ()” regrese instantáneamente. Luego, se llaman “join()” y “thread 1”. De la misma manera, repetimos el proceso llamando a las funciones “start()” y “join()” usando “thread 2”.
La técnica “join()” es utilizada por un subproceso para esperar a otro subproceso. En consecuencia, el primer hilo ha sido terminado. Comencemos a imprimir primero, y después de eso, apareció “verdadero” porque se cumplió la condición del primer hilo. La respuesta será 0 si dividimos 15 por 3. Por lo tanto, mostró “verdadero” antes de agregar la declaración impresa “fin”, lo que significa que el primer hilo ha llegado a su fin. Entonces se vio el segundo hilo. El segundo hilo luego terminó después de mostrar “falso” porque no se cumplieron los criterios y las respuestas a los números dados no eran cero.
Aquí hay otro ejemplo de subprocesamiento donde se usa la función “threads.join()” así como el método time.sleep(). El primer paso consiste en importar las dos bibliotecas de Python. Debido a que este código usa el método “time.sleep()”, la primera importación es para el módulo “thread”, mientras que la segunda importación es para el módulo “time”. La técnica Python “time.sleep()” se utiliza para esperar la ejecución de un programa. El método “sleep()” de Python se puede utilizar para detener el rendimiento de un programa durante un período específico, determinado en segundos. Comprenda que la técnica “time.sleep()” de Python solo finaliza el hilo actual, no todo el programa.
Se definen dos funciones. La primera función en este script, “func1”, se usa para almacenar dos sentencias de impresión usando la función “print()”. La primera declaración que imprimimos usando la declaración de impresión es “subproceso de inicio 1”. Luego, en la siguiente línea, usamos la función “dormir ()” con el módulo de tiempo para establecer el tiempo en “20” segundos. Luego, llamamos a otra declaración usando la función print(), “el subproceso 1 ha terminado”.
Luego, creamos una segunda función, “func2” y le pasamos dos declaraciones. La primera declaración que queremos imprimir es “Comenzando el hilo 2”. En la siguiente línea, establecemos los intervalos de tiempo en segundos para que sean “4” usando el método “time.sleep()”. Luego, usamos la función “imprimir ()” para imprimir la declaración “El subproceso 2 ha finalizado”. Después de construir la función, ahora creamos dos subprocesos y usamos el módulo de subprocesos para llamar a la función, pero antes de hacerlo, primero mostramos la declaración “inicio”. La primera función, “func1”, ahora se llama usando un hilo y se almacena en la variable recién formada “t1,”. Después de lo cual, se llama a “func2” usando un hilo y se coloca en la variable “t2”.
Luego, en la siguiente línea, llamamos a la función “start()” con los hilos “t1” y “t2” para comenzar su ejecución. Antes de imprimir la declaración “finaliza”, usamos el método “time.sleep ()” para configurar el temporizador en dos segundos. Finalmente, llamamos a la función “join()” con “t2” y usamos el método “time.sleep()”.
Ahora, la salida mostró primero el inicio de la declaración de impresión, luego, cuando llamamos a func1 usando hilo, fue a func1 e imprimió la declaración “hilo de inicio 1”. Como configuramos el tiempo para “20” antes de imprimir la segunda declaración, el sistema se durmió durante “20” segundos. Luego, llegó a la segunda “func2” imprimió su declaración, “subproceso de inicio 2”. Y usamos “time.sleep ()” antes de imprimir su declaración finalizada, el sistema se durmió durante “4” segundos. Debido a que el intervalo de tiempo entre las declaraciones “func2” es más pequeño que las declaraciones finales “func1”, ahora imprime la declaración final “func2”, que es “subproceso 2 terminado” antes de la declaración final “func1”, que es “subproceso 1 está terminado”.
Conclusión
Este artículo usó dos subprocesos para discutir la técnica Python “thread.join()”. En el ejemplo mencionado anteriormente, construimos una función, la llamamos usando la función con el módulo “thread” y usamos los hilos para invocar el método “join()”. Este procedimiento “join()” espera a que termine el primer subproceso antes de iniciar la ejecución del segundo subproceso. En el ejemplo anterior, también usamos “time.sleep()” para retrasar la ejecución de declaraciones.