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