subprocess.Popen 有时 return 非零退出代码

subprocess.Popen sometimes return non zero exit code

我的代码使用 subprocess.Popen 函数调用多个进程 运行ning 一个不同的 python 脚本,并等待所有进程完成 运行ning。 有时(并非所有 运行s,即使参数相同)一个或多个进程不是 运行ning(调用代码中的第一件事是在这些情况下不会创建的日志文件的创建。

for fname1 in input_files_1:
    cmd_list = create_batch_cmd(fname1)
    print (' '.join(cmd_list))
    p_list.append(Popen(' '.join(cmd_list), shell=True))
    logging.info("started process for %s" % fname1)

logging.info("waiting for processes")
ps_status = []
while True:
    ps_status = [p.poll() for p in p_list]
    if all([x is not None for x in ps_status]):
        break
logging.info("all processes finished")
print ps_status

ps_status 通常是零列表。 在 12 个进程的 运行 中,当 3 个失败时,ps_status 是:

[0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0]

这可能是什么原因造成的?我该如何调查? 谢谢

您的进程编号 3、8、10 失败,这不是 python 问题,因为所有其他进程似乎都运行良好。也许你应该做 p.wait() 而不是 poll()