vos decis que no se puede iniciar y parar un hilo cuantas veces quiera por mas que siempre mantenga solo una iniciacion del hilo a la vez? (fijate que yo paro el hilo y cuando el hilo ya finalizo lo vuelvo a iniciar)
en caso de que lo anterior sea afirmativo, crear varios hilos para esto, no seria ineficiente? o cuando termina un hilo no queda en memoria?
probe este codigo y anda, pero me gustaria que no queden hilos colgados en memoria:
(lo que hago es antes de hacer hilo.start(), hago: hilo=threading.Thread(target=self.hilo)
Código Python:
Ver originalclass 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(10)
self.crearHilo()
def crearHilo(self):
if self.t.isAlive():
print "hilo activo, no inicio"
else:
self.parar=False
print "hilo desactivado, inicio"
# t es un hilo
self.t = threading.Thread(target=self.hilo)
self.t.start()
def hilo(self):
while (not self.parar):
print "se esta ejecutando el hilo"
time.sleep(2)
print "se esta acabando el hilo"
return
if __name__ == "__main__":
oa=MainWindow()
en cuanto a la forma de implementar hilos, tanto heredando de threads (como me propusiste vos) como haciendo como hago yo, tengo entendido que es lo mismo, o por lo menos es valido hacerlo de las dos formas.
se que para el ejemplo que puse es trivial los hilos, pero lo simplifique para no enredarme con otras cosas y centrarme en el problema de los hilos y para que ustedes entiendan el codigo sin tener que leer mucho codigo.
gracias por responder!!