目前我正在运行一个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。显然,这不是一个很好的方法,因为有时会出现意想不到的延迟/滞后,所以我应该使用不同的解决方案。
答案 0 :(得分:1)
您可以使用Popen.wait()等待进程终止
最好的选择是将所有进程存储在一个列表中,并在启动所有进程后wait()
直到它们终止。你不应该手动杀死它们(如果脚本自己退出)。