import multiprocessing as mlp
class Test(mlp.Process):
def run(self):
if self.name == "Test-2":
import time
time.sleep(4)
print self.name
jobs = []
for i in range(5):
m = Test()
jobs.append(m)
m.run()
for i in jobs:
i.join()
在上面的代码中,输出总是: Test-1 Test-2 Test-3 Test-4 Test-5
而这些进程只会一个接一个地产生。Like测试-3仅在测试-2完成后跨越。它们不应该并行发生吗?
而且,i.join()抛出错误: AssertionError:只能加入已启动的进程
我做错了什么?
谢谢..。
发布于 2012-12-25 23:54:24
你从来没有启动过这个过程。run
方法旨在由子类实现,您正确地实现了这一点,但是您应该调用start
方法来启动流程(并在另一个流程实例中自动执行run()
)。
换句话说,调用m.start()
而不是m.run()
。
https://stackoverflow.com/questions/14032034
复制相似问题