13.04.2017 Views

Python Para Todos

Guia Basica de Programacion eusando Pyton

Guia Basica de Programacion eusando Pyton

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Python</strong> para todos<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 para<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 para 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 />

para 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) para 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 />

<strong>Para</strong> 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!