Python Multiprocessing Exit Elegant Wie?
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()
Ich Frage mich nur, wie kommt der code oben nicht wirklich " drucken "Sie verlassen". Was mache ich falsch? wenn ja, kann mir jemand zeigen Sie den richtigen Weg, um würdevoll beenden? (Ich beziehe mich nicht auf Prozess.kündigen oder zu töten)
InformationsquelleAutor der Frage | 2009-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, Sie sind nicht zu sehen, dies geschehen ist, weil Sie nicht der Kommunikation mit dem Subprozess. Sie versuchen die Verwendung einer lokalen Variablen (lokal für den parent-Prozess), das signal für das Kind, sollte es Herunterfahren.
Werfen Sie einen Blick auf die Informationen auf synchonization primatives. Müssen Sie setup ein signal von einer Art, die verwiesen werden kann, in beiden Prozessen. Sobald Sie dieses haben, sollten Sie in der Lage sein, den Schalter in der parent-Prozess und warten, bis das Kind stirbt.
Versuchen Sie den folgenden code:
InformationsquelleAutor der Antwort jkp