Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: searching en 24 Agosto 2017, 22:04 pm



Título: Uso de isAlive() para saber cuando termina un hilo
Publicado por: searching en 24 Agosto 2017, 22:04 pm
#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")


Título: Re: Uso de isAlive() para saber cuando termina un hilo
Publicado por: MCKSys Argentina en 24 Agosto 2017, 22:27 pm
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 (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!