您没有看到这种情况的原因是因为您没有与子流程进行通信。 您正在尝试使用局部变量(对于父进程而言是局部变量)向子进程发出信号,告知它应该关闭。
看一下有关同步化基元的信息。 您需要设置某种信号,这两个过程都可以引用。 一旦有了这个,您应该能够轻拂父进程中的开关,并等待孩子死亡。
尝试以下代码:
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()