Hilos y aplicación gráfica

Arnau Sanchez pyarnau en gmail.com
Lun Jun 15 20:10:28 CEST 2009


Macrux wrote:

> En efecto, el programa gedit inicia, pero cuando lo cierro e intentengo
> volverlo a ejecutar, lanza una excepcion diciendo que el hilo ya esta
> corriendo. Es decir, el hilo
> permanece abierto, aunque yo cierre el programa que se lanzo.
> 
> Alguno de ustedes sabe como podria saber si el programa que ejecuto
> desde la consola es terminado, y basandome en ello terminar el hilo, de
> hecho, como puedo
> terminar un hilo?
> 

A ver, son varias cuestiones:

1. Los hilos no los puedes "matar", tienen que acabar ellos mismos. Sí puedes
indicarle a un hilo que finalice usando librerías de IPC (colas, eventos, etc).
La cuestión ha salido muchas veces en la lista, por ejemplo:

http://listas.aditel.org/archivos/python-es/2009-February/024130.html

No creo que lo necesites en este caso.

2. Si lo que quieres es esperar a que un hilo acabe, mira Threading#join:

http://docs.python.org/library/threading.html#threading.Thread.join

3. El error que te da al volver a lanzar el programa está justificado según lo
que dice la documentación:

http://docs.python.org/library/threading.html#threading.Thread.start

"It must be called at most once per thread object."

Es decir, vuelve a crear una instancia, no la reutilices.

--

Como ya te han comentado, y aunque dices que es el ejercicio el que te impone
usar threads, iniciar procesos de esta forma es muy mala práctica. Lo indicado
es usar subprocess:

http://docs.python.org/library/subprocess.html

-- 
Desarrollador freelance
http://www.arnau-sanchez.com
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es