12.05.2013 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.

t = MiThread(i)<br />

t.start()<br />

t.join()<br />

Threads<br />

El método join se utiliza <strong>para</strong> que el hilo que ejecuta la llamada se<br />

bloquee hasta que finalice el thread sobre el que se llama. En este caso<br />

se utiliza <strong>para</strong> que el hilo principal no termine su ejecución antes que<br />

los hijos, lo cuál podría resultar en algunas plataformas en la terminación<br />

de los hijos antes de finalizar su ejecución. El método join puede<br />

tomar como parámetro un número en coma flotante indicando el<br />

número máximo de segundos a esperar.<br />

Si se intenta llamar al método start <strong>para</strong> una instancia que ya se está<br />

ejecutando, obtendremos una excepción.<br />

La forma recomendada de crear nuevos hilos de ejecución consiste en<br />

extender la clase Thread, como hemos visto, aunque también es posible<br />

crear una instancia de Thread directamente, e indicar como parámetros<br />

del constructor una clase ejecutable (una clase con el método especial<br />

__call__) o una función a ejecutar, y los argumentos en una tupla<br />

(parámetro args) o un diccionario (parámetro kwargs).<br />

import threading<br />

def imprime(num):<br />

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

print “Soy el hilo principal”<br />

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

t = threading.Thread(target=imprime, args=(i, ))<br />

t.start()<br />

Además de los parámetros target, args y kwargs también podemos<br />

pasar al constructor un parámetro de tipo cadena name con el nombre<br />

que queremos que tome el thread (el thread tendrá un nombre<br />

predeterminado aunque no lo especifiquemos); un parámetro de tipo<br />

booleano verbose <strong>para</strong> indicar al módulo que imprima mensajes sobre<br />

el estado de los threads <strong>para</strong> la depuración y un parámetro group, que<br />

por ahora no admite ningún valor pero que en el futuro se utilizará<br />

<strong>para</strong> crear grupos de threads y poder trabajar a nivel de grupos.<br />

101

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

Saved successfully!

Ooh no, something went wrong!