UN SENCILLO EJEMPLO SOBRE USO DE «HILOS» EN PYTHON, CON «threading».

Saludos y bienvenidos, nuevamente, a vuestra página sobre programación en lenguaje Python. En la presente ocasión nos disponemos a abordar el concepto de «hilos«. Esto es debido a que, en ciertas ocasiones, vamos a necesitar que nuestro programa, ejecute 2 o más procesos («hilos«) de forma simultanea. Para ello, contamos en python con la librería «threading«, la cual, nos va permitir ejecutar, dicha acción. Para ello, qué duda cabe que lo primero que haremos será importar dicho módulo:

Por su parte, como solemos hacer, nos introduciremos a través de un sencillo ejemplo, en el que crearemos 3 procesos, los cuales, consistirán en la ejecución de una sencilla función a la que hemos llamado «cuenta()«:

Como se ve, se trata de una función muy sencilla, que apenas requiere explicación, en la que el valor de un entero (representado por la variable «n» que almacenaremos en la variable «count«) se irá incrementando en 1 unidad («count+=1«) en el transcurso de un ciclo, el cual, se ejecutará mientras que dicho valor de «count» sea inferior a 10 («while count<10:«), imprimiéndose el valor de «count» («print(count)«) en cada ejecución del mismo. A su vez, junto al valor inicial de «n«, introduciremos como segundo argumento, la variable «name» con la que la función identificará cada uno de los tres procesos simultáneos que le vamos a pasar:

Con ello, ya tenemos la función que vamos a ejecutar simultáneamente por triplicado, ahora, el siguiente paso será, definir los 3 procesos a ejecutar en paralelo:

Para ello, hemos creado 3 objetos («t«, «t2» y «t3«) que, mediante el método «threading.Thread()» crearán cada uno de los procesos a ejecutar de forma simultánea. Esto, a su vez, lo haremos definiendo 2 variables: «target«, con la que establecemos la función que ejecutará cada proceso, que para los tres casos será la función «cuenta«, (aunque también podríamos ejecutar procesos simultáneos en funciones distintas) y «args«, la cual, a su vez, establecerá el valor inicial para «n» (1, para «t«, 2 para «t2» y 3 para «t3«) y el nombre que usaremos para identificar el proceso, que serán «thread1«, «thread2» y «thread3«. Notese que las variables contenidas en «args«, se van a corresponder con las variables «n» y «name» de la función a ejecutar.

Hecho esto, y para ejecutar los procesos, usaremos «.start()» para iniciarlos:

Introducido este sencillo código, ejecutaremos nuestro programa, al que hemos llamado «ejemplo_thread.py«:

Vemos, que en la primera ejecución del ciclo, se visualiza el valor 123. Esto es debido a que la función «cuenta» se ha ejecutado 3 veces de forma simultánea, imprimiendo en una sola vez, el valor inicial de «thread1» (1), «thread2» (2) y «thread3» (3), dando como resultado el output 123. Para la segunda ejecución del ciclo, en la que ya se ha producido el incremento en 1 del valor de «count«, la sentencia «print()» ha impreso los 3 nuevos valores de dicha variable, para cada uno de los procesos (dando como resultado 234) y así sucesivamente, hasta llegar al valor 89, en el que ya no se ha impreso el valor «count» de «thread3» debido a que, tras haber alcanzado en la ejecución anterior, el valor de 9 y habersele sumado 1 («count+=1«) ha dejado de cumplir la condición del ciclo, de ser inferior a 10 («while count<10:«), dando así, lugar a la finalización de dicho proceso. Lo mismo sucederá en la ejecución siguiente, para «thread2«, reflejándose, solo el valor del proceso «thread1» (9), el cual, también finalizará tras su incremento en 1.

Visto esto, tendríamos nuestro primer ejemplo, sobre ejecución de hilos en python, el cual, podéis ver en el siguiente enlace:

https://github.com/antonioam82/ejercicios-python/blob/master/ejemplo_thread.py

Un segundo ejemplo puede verse en el siguiente enlace:

https://github.com/antonioam82/ejercicios-python/blob/master/ejemplo_thread2.py

Saludos.

Deja un comentario