23.11.2012 Views

Python para todos

Python para todos

Python para todos

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />

por lo tanto, menos cambios de contexto. También podemos plantearnos<br />

el utilizar procesos en lugar de threads, como ya comentamos, utilizando<br />

por ejemplo el módulo processing; escribir el código en el que<br />

el rendimiento sea crítico en una extensión en C o utilizar Iron<strong>Python</strong><br />

o Jython, que carecen de GIL.<br />

Threads en <strong>Python</strong><br />

El trabajo con threads se lleva a cabo en <strong>Python</strong> mediante el módulo<br />

thread. Este módulo es opcional y dependiente de la plataforma, y<br />

puede ser necesario, aunque no es común, recompilar el intérprete <strong>para</strong><br />

añadir el soporte de threads.<br />

Además de thread, también contamos con el módulo threading que se<br />

apoya en el primero <strong>para</strong> proporcionarnos una API de más alto nivel,<br />

más completa, y orientada a objetos. El módulo threading se basa<br />

ligeramente en el modelo de threads de Java.<br />

El módulo threading contiene una clase Thread que debemos extender<br />

<strong>para</strong> crear nuestros propios hilos de ejecución. El método run<br />

contendrá el código que queremos que ejecute el thread. Si queremos<br />

especificar nuestro propio constructor, este deberá llamar a threading.<br />

Thread.__init__(self) <strong>para</strong> inicializar el objeto correctamente.<br />

import threading<br />

class MiThread(threading.Thread):<br />

def __init__(self, num):<br />

threading.Thread.__init__(self)<br />

self.num = num<br />

def run(self):<br />

print “Soy el hilo”, self.num<br />

Para que el thread comience a ejecutar su código basta con crear una<br />

instancia de la clase que acabamos de definir y llamar a su método<br />

start. El código del hilo principal y el del que acabamos de crear se<br />

ejecutarán de forma concurrente.<br />

print “Soy el hilo principal”<br />

for i in range(0, 10):<br />

104

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!