【发布时间】:2009-08-05 07:07:23
【问题描述】:
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()
我只是想知道为什么上面的代码并没有真正打印“你退出了”。我究竟做错了什么?如果是这样,有人可以指出正确退出的正确方法吗? (我不是指 process.terminate 或 kill)
【问题讨论】:
-
实际上,所有这些代码都应该按原样给您一个 NameError,因为您正在尝试在类创建期间实例化该类。换句话说:您可能想要减少最后八行。
-
注意:此示例代码将在 win32 上失败,因为您没有使用保护子句保护主脚本代码:`if name == "main": ...