希望在所有子进程都运行完后停止它们

2024-10-01 04:51:29 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在运行一个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了

之前,我尝试使用delay和loop变量来确定脚本将运行多长时间,然后为结果添加一秒钟。然后我用这个结果告诉我的脚本休眠,直到脚本完成,然后杀死arrayProcess。显然这不是一个很好的方法去做这件事,因为有时可能会有意想不到的延迟/滞后,所以我应该使用一个不同的解决方案


Tags: 方法in目录脚本loop密码forif
1条回答
网友
1楼 · 发布于 2024-10-01 04:51:29

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

相关问题 更多 >