如何告诉 python 等待 shell (.sh) 脚本
How to tell python to wait for shell (.sh) script
我正在从我的 python 代码中调用一个 shell (.sh) 脚本,我想告诉 Python 等待脚本结束,然后再继续剩下的代码。作为记录,该脚本正在调用 HPC 集群进行一些大约需要 40-50 分钟的计算。我可能会做 sleep()
并强制 python 等待这 40-50 分钟,但首先我并不总是知道应该等待的时间量,其次我希望有一种更有效的方式这样做。
因此,使用 os.system("bsub < test.sh")
.
调用脚本
有没有什么方法可以真正告诉 python 等到脚本完成后再继续其余的代码?
提前致谢
我认为 @Barmar 指出了一些评论中的问题
当您 运行 bsub
时,它会立即提交作业 returns,而不是等待完成。
你应该
- 将
-K
arg 添加到 bsub 以使其等待 ref
- 直接跳过
bsub
和运行脚本
- 在脚本的末尾写一些独立的标记(可能是一个文件)并让 Python 脚本循环检查它(可能每 1-5 秒检查一次,这样它就不会淹没该资源)
- 重新编写纯脚本Python并直接将其合并到您的逻辑中
我正在从我的 python 代码中调用一个 shell (.sh) 脚本,我想告诉 Python 等待脚本结束,然后再继续剩下的代码。作为记录,该脚本正在调用 HPC 集群进行一些大约需要 40-50 分钟的计算。我可能会做 sleep()
并强制 python 等待这 40-50 分钟,但首先我并不总是知道应该等待的时间量,其次我希望有一种更有效的方式这样做。
因此,使用 os.system("bsub < test.sh")
.
有没有什么方法可以真正告诉 python 等到脚本完成后再继续其余的代码? 提前致谢
我认为 @Barmar 指出了一些评论中的问题
当您 运行 bsub
时,它会立即提交作业 returns,而不是等待完成。
你应该
- 将
-K
arg 添加到 bsub 以使其等待 ref - 直接跳过
bsub
和运行脚本 - 在脚本的末尾写一些独立的标记(可能是一个文件)并让 Python 脚本循环检查它(可能每 1-5 秒检查一次,这样它就不会淹没该资源)
- 重新编写纯脚本Python并直接将其合并到您的逻辑中