def start_job(self,run_dir,cmd,app,jid,np,myjobs):
"""this is what the separate job process runs"""
for i in range(np): self.sem.acquire()
# update state to 'R' for run
self._set_state(jid,STATE_RUN)
mycwd = os.getcwd()
os.chdir(run_dir) # change to case directory
pro = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, preexec_fn=os.setsid)
myjobs[jid] = pro
pro.wait() # wait for job to finish
myjobs.pop(long(jid),None) # remove job from buffer
# let user know job has ended
outfn = app + ".out"
with open(outfn,"a") as f:
f.write("FINISHED EXECUTION")
# update state to 'C' for completed
os.chdir(mycwd)
self._set_state(jid,STATE_COMPLETED)
for i in range(np):
self.sem.release()
评论列表
文章目录