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



