想要在所有子进程完成运行时停止子进程

时间:2014-08-15 10:00:31

标签: python bash

目前我正在运行一个python脚本,它运行某个目录中的所有shell脚本。我遇到了麻烦,因为即使所有其他脚本都已完成运行,该过程也不会停止。

这是我的代码

for file in dirs:
    if file.endswith(".sh"):
        filePath = os.getcwd() + "/arrayscripts/" + file
        arrayProcess = subprocess.Popen([filePath, delay, loop, userID], shell=False)

有什么方法可以检查所有这些脚本是否都已经完成运行,所以我可以杀死arrayProcess吗?

以前我尝试使用延迟和循环变量来查找脚本运行的时间,然后在结果中添加一秒。然后我使用这个结果告诉我的脚本睡眠,直到脚本完成,然后杀死arrayProcess。显然,这不是一个很好的方法,因为有时会出现意想不到的延迟/滞后,所以我应该使用不同的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用Popen.wait()等待进程终止 最好的选择是将所有进程存储在一个列表中,并在启动所有进程后wait()直到它们终止。你不应该手动杀死它们(如果脚本自己退出)。