0
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

而这些过程只会一个接一个地产生。像 Test-3 一样,仅在 Test-2 完成后才跨越。他们不应该并行发生吗???

而且, i.join() 抛出错误: AssertionError: can only join a started process

我做错了什么???

谢谢...

4

1 回答 1

2

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

换句话说,调用m.start()而不是m.run().

于 2012-12-25T15:54:24.277 回答