1. 程式人生 > 其它 >批處理定時執行任務_定時執行Abaqus作業任務

批處理定時執行任務_定時執行Abaqus作業任務

技術標籤:批處理定時執行任務

Abaqus分析計劃任務的批處理執行,基於windows的批處理檔案的實現和基於python指令碼的實現,大家應該都很熟悉了,通過事先編譯好的指令碼檔案來批處理計劃任務,簡單示例如下:

windows 批處理檔案 (.bat)示例:

abaqusjob=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:/tempabaqusjob=test1cpus=4intabaqus job=test2 cpus=4 int

再建立計劃任務jobs:可通過windows管理工具計劃任務程式建立,也可在命令提示符(command)介面通過schtasks命令建立。

schtasks /create /SC ONCE /TN jobs /TR c:\temp\task.bat /ST 14:35

674f1b5c2f25806c33902b49cdf45117.png

如上圖所示,我們通過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函式)。