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()
字符串
我只是想知道为什么上面的代码没有真正打印出“你退出了”。我做错了什么?如果是的话,谁能告诉我正确的退出方式?(我不是指进程.终止或杀死)
1条答案
按热度按时间7vux5j2d1#
您没有看到这种情况发生的原因是因为您没有与子流程进行通信。您正在尝试使用局部变量(父进程的局部变量)来通知子进程它应该关闭。
看一下有关同步原语的信息。您需要设置一个可以在两个进程中引用的某种信号。一旦你有了这个,你应该能够在父进程中轻按开关,等待子进程死亡。
请尝试以下代码:
字符串