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