【问题标题】:Wait of abacus job to complete when launched from python script从 python 脚本启动时等待算盘作业完成
【发布时间】:2017-05-29 13:13:18
【问题描述】:

我正在尝试通过 Windows 8 机器上的命令提示符从 Python 运行 Abaqus 脚本。

我遇到的问题是我无法让 Python 脚本等到 Abaqus 作业完成后再继续。

以下是我尝试过的一些代码,一次一个:

os.popen('abaqus job=plate ask_delete=OFF')
os.system('abaqus job=plate ask_delete=OFF')
os.system('abaqus job=plate ask_delete=OFF')
subprocess.call('abaqus job=plate ask_delete=OFF',shell=True)
subprocess.check_call('abaqus job=plate ask_delete=OFF',shell=True)

我也尝试过在这样的子进程工具之后使用等待命令:

p1 = subprocess.check_call('abaqus job=plate ask_delete=OFF',shell=True)
p1.wait()

但我收到错误:AttributeError: 'int' object has no attribute 'wait'

我不想使用time.sleep(),因为这会在我的代码中造成相当长的停机时间。我正在使用 Python 3.5.2 和 Anaconda 4.2.0(64 位)。

【问题讨论】:

    标签: python subprocess os.system abaqus


    【解决方案1】:

    您需要包含 abaqus 关键字“interactive”。例如

    abaqus myjob=bob1 ask_delete=off interactive

    否则它将在后台运行,所有输出都转到bob1.log 此外,还有一个带有 abaqus 安装的内置 python 环境,可用于自动运行 abaqus 作业。如果你使用这个“abaqus”python,还有更多的作业控制和监控选项

    【讨论】:

    • 谢谢,我将代码运行为 subprocess.call('abaqus job=plate ask_delete=OFF interactive',shell=True)。我知道 Abaqus 有一个 python 模块,但由于 Python 版本不匹配,我喜欢只更新 .inp 文件然后提交作业的简单性。
    【解决方案2】:

    call(...)check_call(...) 这两个函数默认等待命令完成。 仅用于调试,通过 Popen 调用命令并使用完整路径“C:\...\abaqus.exe ...”运行“abaqus”。

    import subprocess
    
    cmd = subprocess.Popen('abaqus job=plate ask_delete=OFF', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
    out, err = cmd.communicate()
    code = cmd.returncode
    
    print(code) # should 0 to indicate the command run successfully
    print(out)  # what was piped to stdout
    print(err)  # what was piped to stderr
    

    【讨论】:

    • Maurice,我按照您的方式复制了您的代码,python 脚本现在等到 Abaqus 作业完成后再继续。我认为这是因为 cmd.communicate() 命令正在阻止脚本。但是,您的评论听起来像是您只是在尝试调试问题,只是想检查您是否打算将此作为解决方案。
    • 太好了,如果它现在可以工作的话。这是一个解决方案,我个人最喜欢具有正确参数的 Popen。
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多