我有以下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个过程。
答案 0 :(得分:5)
您忘记了第二个和第三个p.start
的括号。它应该是:
p.start()