Aunque no podemos matar hilos en Python, hay algunas técnicas que podemos usar para simular la muerte de hilos en Python. Matar un hilo en Python de repente se considera un enfoque de programación pobre ya que no podemos matar el hilo directamente. En cambio, debemos usar uno de los métodos suministrados por Python. Estos métodos terminarán con precisión los hilos, pero están bastante cerca del proceso.
Creando un hilo en Python
Cuando ejecuta un programa, un hilo es un flujo separado de ejecución que se ejecuta en el fondo del programa. Los hilos de Python son un tipo de proceso que puede tener su ejecución planificada. Un hilo es, para decirlo, un proceso informático que una computadora llevará a cabo. El conjunto de instrucciones de un programa se puede realizar por separado de otros códigos. El hilo de fondo no se puede terminar correctamente en Python, pero hay otras técnicas que podemos usar si aún deseamos terminar el hilo. Sin embargo, estos métodos no terminan el hilo correctamente; más bien, solo son muy útiles para hacerlo. Pero aquí, primero demostraremos cómo comenzar un hilo antes de mostrarle cómo detenerlo.
Ejecutemos el código. Primero, importamos las bibliotecas de "tiempo" y "hilo". Luego, en la siguiente línea, definimos la función "func1". En la siguiente línea, usamos un bucle for para iniciar la variable "x" y establecer el rango para las iteraciones del hilo. Aquí, establecemos el rango de "1" a "10", lo que significa que nuestro hilo se detendrá después de "10" iteraciones. En la siguiente línea, llamamos "tiempo.dormir () ", con un intervalo de tiempo de" 1 ". Usamos el "tiempo.función sleep () "cuando queríamos retrasar la ejecución de una declaración.
Luego, llamamos a la función print () dentro de esta función. Pasamos la variable "x", en la que el número de iteraciones se ha almacenado y también aprobamos la declaración de entrada, "iteraciones completadas antes de dejar de fumar". Como establecemos el tiempo en "1", el sistema entrará en modo de suspensión para "1" antes de imprimir la declaración de impresión. Luego, en la siguiente línea, llamamos a esta función "func" con el módulo "hilo". Aquí, inicializamos la variable "t" para almacenar el hilo en él. Entonces, usamos el "T.Función Start () "para iniciar el hilo. Y llamamos a la función "unir ()" con el hilo del método "unir ()" suspende la implementación de un programa hasta que el hilo de destino se haya leído en su totalidad.
Una vez que el hilo haya completado sus iteraciones "10", el sistema detendrá su funcionamiento por "1" segundo antes de imprimir la frase "iteraciones completadas antes de dejar de fumar."Ahora, cuando llamamos a la función con hilo, comenzará la ejecución del hilo a medida que establezcamos sobre el bucle y su rango es" 10 ".
Ahora que ha mostrado todas sus iteraciones en la salida, es imposible matar el hilo aquí. Cuando hacemos clic en Ctrl-C después de cualquier número de iteraciones, el hilo continuará ejecutándose hasta que todas sus iteraciones estén completas. Este hilo solo entiende que necesita terminar sus iteraciones "10".
Usando hilo de demonio para matar el hilo
Ahora, no podemos matar el hilo usando este método. Sin embargo, podemos evitar que el hilo termine utilizando este método simplemente finalizando su ejecución después de una cantidad establecida de tiempo, el hilo no se detiene en el backend. Los hilos que corren de fondo que admiten continuamente los hilos primarios o no dadon en primer plano se conocen como hilos de demonio. El hilo de demonio que se ejecuta en el fondo no impide que el hilo muera.
Comencemos el código importando tres bibliotecas: "Hushing" es el primero, seguido de "tiempo" y "sys" respectivamente. Se pueden usar numerosos métodos y variables en el paquete Python SYS para cambiar diferentes componentes del sistema operativo de Python. Trabajar en el intérprete es posible gracias a su accesibilidad a constantes y métodos que tienen una conexión cercana con el intérprete. Después de la creación de una función con el nombre "FUNC", utilizamos una condición "mientras verdaderas" para funcionar condicionalmente hasta que la declaración se ejecutó dentro del bucle.
Luego, en la siguiente línea, utilizamos la función "print ()" para imprimir la frase, "el hilo está activo pero desaparecerá cuando el programa termine", después de pasar el tiempo "1" segundos en el "tiempo.función sleep () ”. Como usamos "Tiempo.Sleep () "arriba para establecer el tiempo en" 1 "segundos, la declaración ahora ingresará al modo de suspensión por un segundo antes de emitir este método. Luego, en la siguiente línea, usamos el demonio y su propiedad para "verdadero" para permitirnos terminar nuestros hilos después de una cantidad predeterminada de tiempo.
Actualmente, estamos generando un hilo utilizando "Subpuste.hilo "y usando" target = func "para llamar a la función en el hilo. Ahora que hemos usado "T.Inicio () "Para comenzar nuestro hilo, hemos llamado" SYS.salir () ", lo que hará que el sistema arroje una excepción de salida del sistema. Entonces, lo que realmente hace este código es mostrar la instrucción de impresión que se guardó en la función "func" cuando el hilo lo llama, pero retrasa la impresión de la declaración por "1" segundos porque usamos "tiempo.dormir()."
Como puede ver, el hilo se está ejecutando actualmente, pero cuando estaba a punto de completar su octava iteración, presionamos Ctrl-C, que inmediatamente detuvo la terminación del hilo. Esto esencialmente significa que al usar un hilo de demonio, no pudimos matar el hilo, solo para evitar que se ejecute. Esta no es la forma más eficiente de terminar el hilo; En cambio, debemos finalizar toda la operación.
Dado que no es posible obligar al hilo a terminar interrumpiéndolo con el teclado, ahora estamos usando el objeto Python Events en el siguiente script. Esto hará que el hilo se detenga por sí solo. No necesitamos presionar ninguna llave para evitar que termine. Este objeto de evento se ofrece en el módulo de subproceso. Tiene dos métodos especificados: set () y no set ().
Comencemos por implementar el código importando los paquetes de "señal", "enhebrado" y "tiempo". La siguiente línea luego usa "enhebrado.evento () "para invocar el evento del hilo. Luego, en la siguiente línea, usamos la función de impresión () y dentro de ella, llamamos a la declaración de entrada pasando el argumento "I de 20 iteraciones."Estamos imprimiendo el valor de" I "en la variable" F ", que es de iteraciones de" 20 ". Luego, en la siguiente línea, usamos un bucle for y dentro de él, creamos la variable "i" y establecemos el rango en "1" en "20". Luego, usamos la condición "if" que es si sale.evento.se establece () rompe el bucle, lo que significa que si el evento se establece () método entonces termina. Estamos utilizando la función print () para imprimir la declaración que es "iteraciones completadas antes de salir" e imprimir el valor "i" en la variable "f". Usamos la condición "if" que es si sale .evento.se establece () y luego rompa el bucle.
A continuación, creamos una nueva función con el nombre "Handler de señal" al que pasamos las variables "Signum" y "Frame". Después de usar el exit_event.set (), llamamos a las funciones "controlador de señal" con señal.señal y función "func" con "roscado.hilo ", respectivamente. Finalmente, utilizamos la función Join () al final para conectar las dos funciones.
Como puede ver en la pantalla de resultados, establecemos el rango en "20", lo que indica que el cálculo finalizará después de veinte iteraciones, pero en este caso, terminó después de cinco iteraciones a pesar de que no hicimos clic en ninguna tecla de interrupción del teclado. Esto indica que el hilo no fue asesinado, sino terminado, lo cual es beneficioso para la presentación.
Conclusión
En este artículo, discutimos cómo matar un hilo en Python, sin embargo, descubrimos que si bien podemos detener la ejecución de un hilo después de un cierto número de iteraciones, no podemos matar un hilo en Python. Primero creamos un hilo y luego usamos un hilo de demonio para matarlo. Aun así, descubrimos que mientras usamos este módulo, podríamos detener inmediatamente la ejecución del hilo escribiendo CTRL-C, y el hilo no sería asesinado. El hilo se detendrá instantáneamente después de una cierta cantidad de ejecución cuando usamos objetos de evento Python, lo cual fue útil.