Skip to main content
 首页 » 编程设计

python之多处理只能加入一个启动的进程

2025年05月04日34zlslch

<分区>

我有以下 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() 

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

当它运行时,在第一个进程完成并写入其输出后出现错误

  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()。

这是我第一次使用 Multiprocessing,所以我可能使用不当。

据我所知,所有 3 个进程都应该启动。