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()
Zastanawiam się, jak to możliwe, że powyższy kod naprawdę nie drukuje "wyszedłeś". Co ja robię źle? jeśli tak, to czy ktoś może wskazać mi właściwy sposób na wyjście z wdziękiem? (Nie mam na myśli procesu process.terminate ani kill)Wieloprocesorowe przetwarzanie w Pythonie kończy się elegancko Jak?
Faktycznie, cały ten kod powinien dać Ci jak jest to NameError, ponieważ starasz się instancję klasy podczas tworzenia klasy. Innymi słowy: Prawdopodobnie chcesz wydać ostatnie osiem linii. – balpha
Uwaga: ten przykładowy kod zakończy się niepowodzeniem na win32, ponieważ nie zabezpieczono głównego kodu skryptu klauzulą strażnika: 'jeśli __name__ ==" __main__ ": ... – jkp