Abaqus分析计划任务的批处理执行,基于windows的批处理文件的实现和基于python脚本的实现,大家应该都很熟悉了,通过事先编译好的脚本文件来批处理计划任务,简单示例如下:
windows 批处理文件 (.bat)示例:
abaqus job=test1 cpus=4 intabaqus job=test2 cpus=4 int
python 批处理文件 (.py)示例:
jobs=['test1','test2',...] for job in jobs: mdb.JobFromInputFile(name=job,inputFileName=job+'.inp', numCpus=4,numDomains=4) mdb.jobs[job].submit() mdb.jobs[job].waitForCompletion()
但是工作中也会有一种计划之外的状况,例如正在运行的时候有紧急新增的分析任务,预计当前分析在晚间可以结束,希望当前任务结束后可以定时执行新增分析任务,高效利用计算资源,此时就需要实现分析任务的定时执行。
如何设置定时任务的执行,基于windows批处理文件和python脚本的实现方式分别简述如下:
windows批处理文件 (.bat)联合计划任务定时执行示例:
先编译批处理文件 task.bat:
cd c:/tempabaqus job=test1 cpus=4 intabaqus job=test2 cpus=4 int
再创建计划任务jobs:可通过windows管理工具计划任务程序创建,也可在命令提示符(command)界面通过schtasks命令创建。
schtasks /create /SC ONCE /TN jobs /TR c:\temp\task.bat /ST 14:35
如上图所示,我们通过schtasks(管理计划任务)命令创建了一个名为jobs仅执行一次的计划任务,在指定时间14:35会定时执行 C:/temp/task.bat的任务。
python 的计划任务执行文件 (.py)示例:
也可用python自带库中sched来实现分析任务的定时执行:
编译好的批处理脚本(task.py)如下:
from abaqus import *from abaqusConstants import *def timedtask(): jobs=['test1','test2'] for job in jobs: mdb.JobFromInputFile(name=job,inputFileName=job+'.inp', numCpus=4,numDomains=4,numGPUs=0) mdb.jobs[job].submit() mdb.jobs[job].waitForCompletion()
增加定时任务执行脚本(timertask.py)如下:
import timeimport schedfrom task import timedtaskschedule = sched.scheduler ( time.time, time.sleep )#第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。schedule.enter(300,0,timedtask,())#加入调度事件schedule.run()#运行
如上实现了一个时间调度程序,指定任务task.py将在300秒后运行;
通过scheduler.enter(delay,priority,func,args)函数将任务加入到任务队列里,当指定的时间到了,就会执行任务(func函数)。