Причина, по которой вы не видите этого, состоит в том, что вы не общаетесь с подпроцессом.Вы пытаетесь использовать локальную переменную (локальную для родительского процесса), чтобы сообщить дочернему элементу, что он должен завершить работу.
Ознакомьтесь с информацией о примитивах синхронизации .Вам нужно установить какой-то сигнал, на который можно ссылаться в обоих процессах.Получив это, вы сможете щелкнуть выключателем в родительском процессе и дождаться смерти ребенка.
Попробуйте следующий код:
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()