al parar el hilo (con un bucle como lei en varios lados) y al volverlo a iniciar, me tira un error diciendo de que el hilo ya esta iniciado, incluso poniendole un if not hilo.isAlive()
aca un codigo simplificado:
Código:
me imprime esto la consola cuando lo ejecuto:import sys import os import threading, time class MainWindow(): def __init__(self): # t es un hilo self.t = threading.Thread(target=self.hilo) #como python no brinda una forma de parar ciclos desde afuera necesitamos una variable :S, pero bueh self.parar=True print "creo hilo por primera vez" self.crearHilo() print "creo un hilo sin parar el anterior" self.crearHilo() print "paro el hilo, espero 5 seg y vuelvo a crear" self.parar=True time.sleep(5) self.crearHilo() def crearHilo(self): if self.t.isAlive(): print "hilo activo, no inicio" else: self.parar=False print "hilo desactivado, inicio" self.t.start() def hilo(self): while (not self.parar): print "se esta ejecutando el hilo" time.sleep(2) return if __name__ == "__main__": oa=MainWindow()
Código:
alguno sabe por que?creo hilo por primera vez hilo desactivado, inicio se esta ejecutando el hilo creo un hilo sin parar el anterior hilo activo, no inicio paro el hilo, espero 3 seg y vuelvo a crear hilo desactivado, inicio Traceback (most recent call last): File "__init__.py", line 38, in <module> oa=MainWindow() File "__init__.py", line 21, in __init__ self.crearHilo() File "__init__.py", line 29, in crearHilo self.t.start() File "/usr/lib/python2.6/threading.py", line 467, in start raise RuntimeError("thread already started") RuntimeError: thread already started
desde ya muchas gracias