Uso de isAlive() para saber cuando termina un hilo

Iniciado por searching, 24 Agosto 2017, 22:04 PM

0 Miembros y 1 Visitante están viendo este tema.

searching

#todo el programa funciona bien,ecepto que no respeta la condición isAlive()
#cuando if t.isAlive() == True: si funciona, que es cuando el hilo esta vivo
# cuando if t.isAlive() == False: no funciona, supongo que el hilo devuelve False
# cuando termina el hilo.
# pero por los resultados creo que no devuelve False.
#existe otra instrucción para saber que flag dá el hilo al termino de su proceso?
# o de que otra forma podría manejarlo
#gracias

from threading import Timer
opcion = -1
def motor01():
    print ("fin motor 1\n")

def motor02():
    print ("fin motor 2\n")

while (opcion !=0 ):
    opcion = int (input("opcion deseada "))
    if opcion == 1:
        t = Timer(10.0, motor01)
        t.start() # after 30 seconds, "hello, world" will be printed
        if t.isAlive()== False:
            print ("hacer algo" )
    if opcion == 2:
        t = Timer(10.0, motor02)
        t.start() # after 30 seconds, "hello, world" will be printed
        if t.isAlive() == False:
           print ("realizae x acción")

MCKSys Argentina

Hola!

Fíjate la respuesta que da Cédric Julien aquí: https://stackoverflow.com/questions/11083349/python-threading-timer-stays-alive-after-calling-cancel-method

Usar Thread.join() es lo que necesitas, si quieres esperar hasta que el thread termine.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."