procesos paralelo multitarea ejemplos crear concurrentes con python multiprocessing

paralelo - Python Multiprocesamiento Salga Elegantemente ¿Cómo?



procesos concurrentes python (1)

La razón por la que no está viendo esto suceder es porque no se está comunicando con el subproceso. Está intentando usar una variable local (local para el proceso principal) para indicarle al niño que se debe apagar.

Eche un vistazo a la información sobre primativos de sincronización . Necesita configurar una señal de algún tipo que se pueda referenciar en ambos procesos. Una vez que tenga esto, debería poder presionar el interruptor en el proceso principal y esperar a que el niño muera.

Pruebe el siguiente código:

import multiprocessing import time class MyProcess(multiprocessing.Process): def __init__(self, ): multiprocessing.Process.__init__(self) self.exit = multiprocessing.Event() def run(self): while not self.exit.is_set(): pass print "You exited!" def shutdown(self): print "Shutdown initiated" self.exit.set() if __name__ == "__main__": process = MyProcess() process.start() print "Waiting for a while" time.sleep(3) process.shutdown() time.sleep(3) print "Child process state: %d" % process.is_alive()

import multiprocessing import time class testM(multiprocessing.Process): def __init__(self): multiprocessing.Process.__init__(self) self.exit = False def run(self): while not self.exit: pass print "You exited!" return def shutdown(self): self.exit = True print "SHUTDOWN initiated" def dostuff(self): print "haha", self.exit a = testM() a.start() time.sleep(3) a.shutdown() time.sleep(3) print a.is_alive() a.dostuff() exit()

Me pregunto cómo es que el código anterior realmente no imprime "saliste". ¿Qué estoy haciendo mal? Si es así, ¿alguien podría indicarme la forma correcta de salir con gracia? (No me refiero a process.terminate o kill)