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)Python Multiprocesamiento Salir Elegantemente ¿Cómo?
En realidad, todo este código debe darle tal cual es una NameError, porque estás tratando de crear una instancia de la clase durante la creación de la clase. En otras palabras: probablemente quieras dedentificar las últimas ocho líneas. – balpha
Nota: este código de ejemplo fallará en win32 porque no ha protegido el código del script principal con una cláusula de guardia: 'if __name__ ==" __main__ ": ... – jkp