【问题标题】:How to tell python to wait for shell (.sh) script如何告诉python等待shell(.sh)脚本
【发布时间】:2021-05-11 18:40:30
【问题描述】:

我正在从我的 python 代码调用一个 shell (.sh) 脚本,我想告诉 Python 在继续执行其余代码之前等待脚本结束。作为记录,脚本调用 HPC 集群进行一些计算,大约需要 40-50 分钟。我可能会做sleep() 并强制 python 等待这 40-50 分钟,但首先我并不总是知道应该等待的时间量,其次我希望有一种更有效的方法来做到这一点。 因此,使用os.system("bsub < test.sh") 调用脚本。

有什么方法可以真正告诉 python 等到脚本完成,然后继续执行其余代码? 提前致谢

【问题讨论】:

  • os.system() 已经在等待命令退出。您是否看到了不同的行为?
  • 我认为这里的问题是bsub 用于提交批处理作业。作业异步运行,bsub 不会等待它完成。
  • 不要使用bsub,只运行脚本本身。

标签: python sh wait os.system


【解决方案1】:

我认为 @Barmar 在几个 cmets 中发现了问题

当您运行bsub 时,它会提交作业并立即返回,而不是等待完成。

你应该

  • -K arg 添加到bsub 以等待ref
  • 跳过bsub,直接运行脚本
  • 在脚本(可能是文件)的末尾写一些独立的标记,并让 Python 脚本循环检查它(可能每 1-5 秒一次,这样它就不会淹没该资源)
  • 用纯 Python 重写脚本并直接将其合并到您的逻辑中

【讨论】:

    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多