hebras y forma de ejecutarlas
camontuyu
camontuyu en yahoo.es
Jue Mayo 11 12:02:25 CEST 2006
El jue, 11-05-2006 a las 09:18 +0200, "Sergio 脕lvarez (xergio)"
escribi贸:
> camontuyu wrote:
> > Hola a todos,
> > tengo el siguiente problema con las hebras.
> >
> > Tengo un modulo main que llama a un objeto que hereda de una thread,
> > seria algo as铆
> >
> > class B(threading.Thread)
> > def __init__(...)
> > self._stop = threading.Event()
> >
> > def run(self):
> > self._stop.clear()
> > while(not self._stop.isSet()):
> > hace cosas
> >
> >
> > modulo main...
> > b = B()
> > b.start()
> >
> >
> > Actualamente el programa ejecuta sus cosas en el while, mientre que
> > imprime por consola los resultados. El problema es cuando terminar la
> > ejecuci贸n de B, por ejemplo con un Control+C. No recibe ninguna se帽al,
> > ya que el la metodo main ha terminado, pero la hebra sigue en
> > funcionamiento.
>
> Yo he tenido tu mismo problema, no s茅 c贸mo terminar la ejecuci贸n del
> thread. PEro me hice esto: arranco la aplicaci贸n y la meto dentro de un
> try:, y luego esto:
>
> except KeyboardInterrupt:
> hilo.stop()
>
> Eso cuando pulso control+c llama a hilo.stop(), y el hilo es lo siguiente:
>
> class MiHilo(threading.Thread):
> def __init__(self):
> threading.Thread.__init__(self)
> self._stp = False
>
> def run(self):
> while not self._stp:
> [... trabaja con lo que sea ...]
>
> def stop(self):
> self._stp = True
>
> Si alguien sabe una forma mejor... porque yo al menos he mirado si hay
> alg煤n kill para los threads y no he visto nada.
>
> >
> > Como termino la ejecuci贸n, parandome en el main con un bucle hasta
> > recibir un control+c y luego enviar a B una se帽al de terminar???
> >
> > Ten铆a pensado cuando est茅 lista la funcionalidad hacerle una interfaz
> > gr谩fica con PyGTK pero no se si est谩 ser谩 la mejor soluci贸n.
> >
> > Alguna sugerencia de como tratar este c贸digo??
> >
> > Un Saludo.
Hola, lo he intentando como has dicho, pero no va.
en el main he puesto
print "antes"
try:
hebra.start()
except KeyboardInterrupt:
print "salir"
hebra.stop()
print "despues"
y efectivamente imprime
antes
despues
mientras la hebra sigue en funcionamiento, por eso dec铆a de incluir un
while 'infinito' que espere a se pulse control+c u otra cosa...
Gracias haber si conseguimos algo guapo. :D
Saludos
______________________________________________
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y m髒iles desde 1 c閚timo por minuto.
http://es.voice.yahoo.com
------------ pr贸xima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
M醩 informaci髇 sobre la lista de distribuci髇 Python-es