从python脚本启动时等待算盘作业完成

时间:2017-01-14 04:51:04

标签: python subprocess os.system abaqus

我正在尝试通过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)

我也试过在子进程工具之后使用wait命令:

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位)。

2 个答案:

答案 0 :(得分:5)

您需要包含abaqus关键字" interactive"。 e.g。

abaqus myjob=bob1 ask_delete=off interactive

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

答案 1 :(得分:2)

默认情况下,函数angular.module('app', ['thirdParty', 'app.common']); angular.module('appInitializer', []) .factory('loader', ($http) => { return $http.get('enabled-modules').then((result) => result.data); }) .factory('initializer', (loader, $document) => { return loader.then((enabledModules) => { $document.ready(() => { angular.bootstrap($document.find('body'), ['app'].concat(enabledModules)); }); }); }); angular.injector(['ng', 'appInitializer']) .get('initializer') .catch((err) => console.error(err)); call(...)都会等待命令完成。 只是为了调试,通过Popen调用命令并使用完整路径'C:\ ... \ abaqus.exe ...'运行'abaqus'。

check_call(...)