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()
在上面的代码中,输出总是: 试验-1 测试-2 试验-3 测试-4 试验5
这些过程只会一个接一个地产生。仅在Test-2完成后测试-3跨度。它们不应该并行发生吗?
而且,i.join()抛出错误:AssertionError:只能加入已启动的进程
我做错了什么???
...谢谢
答案 0 :(得分:2)
你从未开始这个过程。 run
方法用于实现子类,您正确执行了该方法,但start
方法是您应该调用以启动进程的方法(并在另一方中自动执行run()
流程实例)。
换句话说,请致电m.start()
而不是m.run()
。