2012-02-02 7 views
5

puede ser que falte algo tonto, pero he encontré con mi código en PythonWin y funciona, pero cuando lo ejecuto en la línea de comandos que freakspython no creará hilo?

import time, thread 
def print_t(name, delay): 
    while 1: 
     time.sleep(delay) 
     print name 
try: 
    thread.start_new_thread(print_t,("First Message",1,)) 
    thread.start_new_thread(print_t,("Second Message",2,)) 
except Exception as e: 
    print e 

Unhandled exception in thread started by 
sys.excepthook is missing 
lost sys.stderr 

Unhandled exception in thread started by 
sys.excepthook is missing 
lost sys.stderr 
+0

Una cosa que le gustaría saber es que 'import pdb; pdb.pm()' abrirá el depurador en el punto de la última excepción. – Marcin

Respuesta

6

La excepción ocurre cuando el hilo principal (la que comienza otros hilos) termina. En su código, el hilo principal se cierra antes de que finalice cualquiera de sus subhilos (creados por start_new_thread). La solución es esperar en su hilo principal hasta que el hilo hijo termine.

Véase la discusión Simple threading in Python 2.6 using thread.start_new_thread()

2

es porque los principales extremos del hilo, y como se utiliza thread insted de threading, los "hilos niño" morir así.

Mejor utilice el módulo threading.

Cuestiones relacionadas