Archivo de la etiqueta: multiproceso

Manejos de hilos (Threads) en python

wpid-python-thread-exitLos hilos o threads ( en ingles) nos permite realizar varias tareas a la vez sin tener que parar la ejecución del hilo principal que llamo a esa tarea. Para poder utilizar los hilos en python, lo primero que tenemos que hacer es añadir la librería que contiene las funciones de manejos de hilos.

# Libreria para el manejo de los hilos
import threading

Lo siguiente es crear la función que queremos que se ejecute ala llamar al hilo. Esto lo podemos hacer de dos maneras creando una nueva clase, o creando una simple función. Lo más habitual es utilizar las clases, por la flexibilidad que nos da. Las funciones las podemos utilizar para hilos que vamos a llamar utilizando un retardo.

Implantación de hilos mediante clases

La clase esta compuerta por varias secciones, Inicio, ejecución, y otras funciones.

Para definir una clase utilizamos el método «class»  seguido del nombre que queramos identificar a la clase y entre paréntesis el tipo de clase, en este caso «threading.Thread»

# Definición de clases
class MiHilo(threading.Thread):

Lo siguiente es definir la función de inicio, en esta función definiremos los objetos, variables, etc. que se van ha utilizar globalmente en la clase, solo serán globales dentro de la clase donde se han declarado.

# Funcion inicio del hilo
def __init__(self, pParam1, pParam2):  
	threading.Thread.__init__(self)  
	self.pParam1 = pParam1
	self.pParam2 = pParam2
	self.stoprequest = threading.Event()

Después de inicializar todas las variables y funciones de la clase, definimos la función «Run» que contiene el código que queremos que se ejecute.

def run(self):

El hilo se ejecutara hasta que termine la ejecución del código que este en esta función.

Con esto ya tememos definido lo básico que necesitamos para que nuestra clase se ejecute.

Para llamar ha esta clase lo  haremos de la siguiente manera.

hMiHilo = MiHilo(pParam1, pParam2)
hMiHilo.start()

Y con esto tenemos nuestro hilo funcionando.