From 56ba2f3107066b9a449b83eba64cab8e43cae9f0 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@fe.uni-lj.si> Date: Mon, 16 May 2016 10:26:38 +0000 Subject: [PATCH] Added comment about psutil version --- python/trisurf/trisurf.py | 28 ++++++++++++++++++++-------- 1 files changed, 20 insertions(+), 8 deletions(-) diff --git a/python/trisurf/trisurf.py b/python/trisurf/trisurf.py index c57de3e..ac8abaf 100644 --- a/python/trisurf/trisurf.py +++ b/python/trisurf/trisurf.py @@ -13,6 +13,7 @@ import time import datetime import subprocess +import shutil # Process status TS_NOLOCK=0 # lock file does not exist @@ -286,7 +287,7 @@ version=root.find('trisurfversion') self.tape=Tape() self.tape.setTape(tapetxt.text) - + def getPID(self): self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) #self.Dir.makeifnotexist() @@ -323,6 +324,7 @@ return TS_NOLOCK if(psutil.pid_exists(int(pid))): proc= psutil.Process(int(pid)) + #psutil.__version__ == '3.4.2' requires name() and status(), some older versions reguire name, status if proc.name()=="trisurf": if proc.status()=="stopped": return TS_STOPPED @@ -335,6 +337,10 @@ def start(self): if(self.getStatus()==0 or self.getStatus()==TS_COMPLETED): + #check if executable exists + if(shutil.which('trisurf')==None): + print("Error. Trisurf executable not found in PATH. Please install trisurf prior to running trisurf manager.") + exit(1) self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) #Symlinks tape file to the directory or create tape file from snapshot in the direcory... if(self.Dir.makeifnotexist()): @@ -347,7 +353,7 @@ else: try: with open (os.path.join(self.Dir.fullpath(),"tape"), "w") as myfile: - myfile.write("#This is automatically generated tape file from snapshot\n") + myfile.write("#This is automatically generated tape file from snapshot") myfile.write(str(self.tape)) except: print("Error -- cannot make tapefile "+ os.path.join(self.Dir.fullpath(),"tape")+" from the snapshot in the running directory") @@ -359,12 +365,12 @@ #check if the simulation has been completed. in this case notify user and stop executing. if(self.isCompleted() and ("--force-from-tape" not in self.runArgs) and ("--reset-iteration-count" not in self.runArgs)): - print("The simulation was completed. Not starting executable at localhost in "+self.Dir.fullpath()+"\n") + print("The simulation was completed. Not starting executable in "+self.Dir.fullpath()) return cwd=Directory(maindir=os.getcwd()) self.Dir.goto() - print("Starting trisurf-ng executable at localhost in "+self.Dir.fullpath()+"\n") + print("Starting trisurf-ng executable in "+self.Dir.fullpath()) if(self.fromSnapshot==True): params=["trisurf", "--restore-from-vtk",self.snapshotFile]+self.runArgs else: @@ -375,7 +381,7 @@ subprocess.Popen (params, stdout=subprocess.DEVNULL) cwd.goto() else: - print("Process already running. Not starting\n") + print("Process in "+self.Dir.fullpath()+" already running. Not starting.") return def stop(self): @@ -400,22 +406,28 @@ self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) self.statistics=Statistics(self.Dir.fullpath(), statfile) self.Comment=FileContent(os.path.join(self.Dir.fullpath(),".comment")) - pid=self.getPID(); + pid=self.getPID() status=self.getStatus() + if(self.statistics.fileOK): + ETA=str(datetime.timedelta(microseconds=(int(self.tape.config['iterations'])-int(self.statistics.last))*self.statistics.dT)*1000000) if(status==TS_NONEXISTANT or status==TS_NOLOCK): statustxt="Not running" pid="" + ETA="" elif status==TS_STOPPED: statustxt="Stopped" + ETA="N/A" elif status==TS_COMPLETED: statustxt="Completed" + pid="" + ETA="" else: statustxt="Running" if(self.statistics.fileOK): - report=[time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(self.statistics.startDate))),str(datetime.timedelta(microseconds=(int(self.tape.config['iterations'])-int(self.statistics.last))*self.statistics.dT)*1000000), statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()] + report=[time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(int(self.statistics.startDate))),ETA, statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()] else: - report=["N/A","N/A\t",statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()] + report=["N/A","N/A",statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()] return report def writeComment(self, data, mode='w'): -- Gitblit v1.9.3