多处理只能加入已启动的进程

时间:2015-11-12 08:34:49

标签: python multiprocessing

我有以下Python代码

jobs = []
p = Process(target=self.verify_process, args=(vm_ha1, creds, run_cmd_ha1, ip_ha1))
jobs.append(p)
p.start()
p = Process(target=self.verify_process, args=(vm_ha2, creds, run_cmd_ha2, ip_ha2))
jobs.append(p)
p.start
p = Process(target=self.verify_process, args=(vm_client, creds, run_cmd_client, ip_client))
jobs.append(p)
p.start
for p in jobs:
    p.join()

如果VM上的进程已完成,则目标是一个小的def检查,并将打印退出代码。

当它运行时,我在第一个进程完成后得到一个错误,并写出它的输出

  File "/usr/lib/python2.7/multiprocessing/process.py", line 144, in join
    assert self._popen is not None, 'can only join a started process'
AssertionError: can only join a started process

当我四处寻找时,我发现了一些这样的提及。 其中大多数是因为他们都在使用p.run()并且应该使用p.start()

但我已经使用p.start()

这是我第一次捆绑多处理,所以我可能错误地使用它。

从我所看到的,应该开始所有3个过程。

1 个答案:

答案 0 :(得分:5)

您忘记了第二个和第三个p.start的括号。它应该是:

p.start()