Programación de Hilos con Python

Los 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

 

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()

Ejemplo 1:

import threading

def worker():

“”“funcion que realiza el trabajo en el thread”“”

print ‘Estoy trabajando para Genbeta Dev’

return

threads = list()

for i in range(3):

t = threading.Thread(target=worker)

threads.append(t)

t.start()

Ejemplo 2:

import thread

import time

# Indica si ha terminado el hilo

hilo_terminado = False

# Funcion que se ejecuta en un hilo

def funcion (inicio, fin):

global hilo_terminado

# Bucle de inicio a fin, con espera de un segundo

for valor in range(inicio,fin):

print «Hilo : «+str(valor)

time.sleep(0.1)

# marca hilo terminado

hilo_terminado = True

print «Terminado hilo »

Ejemplo 3:

def suma(a, b):

while True:

a+=1

b+=1

print a+b

hilo=threading.Thread(target=suma, args=(5, 8))

hilo.start()

while True:

print «este es el hilo principal del programa»

Ejemplo 4:

import threading

class hilo(threading.Thread):

#el constructor no hace falta especificarlo ya que la clase lo hace por nosotros.

def __init__(self):

threading.Thread.__init__(self)

def run(self):

while True:

print «se esta ejecutando el hilo1»

#el método run es donde se debe introducir el código que se ejecuta en segundo plano.

class hilo2(threading.Thread):

def run(self):

while True:

print «se esta ejecutando el hilo2»

Ejemplo 5:

from threading import Thread

from time import sleep

def espera(n):

sleep(n)

print «Espero %s segundos.» % n subproceso = Thread(target=espera, args=(5,)) subproceso.start()

print «Yo espero menos.»

subproceso.join()

print «Yo llego tarde.»

Referencias:

http://www.todavianose.com/manejos-de-hilos-threads-en-python/

http://www.alvarohurtado.es/threads-en-python/#sthash.jZwNRlrZ.dpuf

http://aprendepythonvolando.blogspot.mx/2012/07/tutorial-20-threads-en-python.html

Deja un comentario