多处理Python不能并行工作

时间:2012-12-25 15:46:41

标签: python-2.7 multiprocessing

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:只能加入已启动的进程

我做错了什么???

...谢谢

1 个答案:

答案 0 :(得分:2)

你从未开始这个过程。 run方法用于实现子类,您正确执行了该方法,但start方法是您应该调用以启动进程的方法(并在另一方中自动执行run()流程实例)。

换句话说,请致电m.start()而不是m.run()