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

der*_*ris 1 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()
Run Code Online (Sandbox Code Playgroud)

如果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
Run Code Online (Sandbox Code Playgroud)

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

但我已经在使用p.start()了.

这是我第一次捆绑Multiprocessing,所以我可能会错误地使用它.

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

Big*_*her 5

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

p.start()
Run Code Online (Sandbox Code Playgroud)