从 python 脚本启动时等待算盘作业完成
Wait of abacus job to complete when launched from python script
我正在尝试通过 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 位)。
函数call(...)
和check_call(...)
默认情况下都等待命令完成。
仅用于调试,通过 Popen 和 运行 'abaqus' 使用完整路径 'C:\...\abaqus.exe ...'.
调用命令
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
您需要包含 abaqus 关键字 "interactive"。例如
abaqus myjob=bob1 ask_delete=off interactive
否则它将在后台 运行 并且所有输出都转到 bob1.log
此外,还有一个带有 abaqus 安装的内置 python 环境,可用于自动化 运行ning abaqus 作业。如果使用此 "abaqus" python
,则有更多作业控制和监视选项
我正在尝试通过 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 位)。
函数call(...)
和check_call(...)
默认情况下都等待命令完成。
仅用于调试,通过 Popen 和 运行 'abaqus' 使用完整路径 'C:\...\abaqus.exe ...'.
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
您需要包含 abaqus 关键字 "interactive"。例如
abaqus myjob=bob1 ask_delete=off interactive
否则它将在后台 运行 并且所有输出都转到 bob1.log
此外,还有一个带有 abaqus 安装的内置 python 环境,可用于自动化 运行ning abaqus 作业。如果使用此 "abaqus" python