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