From 61ad95ca712a374f6e58127fda738b67c57d743d Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Wed, 04 Jan 2017 21:19:52 +0000 Subject: [PATCH] Added many changes to trisurf.py. Mostly readability. Great fix in class Runner by introducing @property tag --- python/trisurf/trisurf.py | 59 ++++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 40 insertions(+), 19 deletions(-) diff --git a/python/trisurf/trisurf.py b/python/trisurf/trisurf.py index 3a1689e..01c3d0c 100644 --- a/python/trisurf/trisurf.py +++ b/python/trisurf/trisurf.py @@ -2,7 +2,7 @@ import xml.etree.ElementTree as ET import base64 import zlib -import io +import sys,io import os from itertools import islice import mmap @@ -236,14 +236,19 @@ try: self.dT=int(epoch2)-int(epoch1) self.last=n2 - print(epoch1) - print(epoch2) - print(self.dT) - print(self.last) + #print(epoch1) + #print(epoch2) + #print(self.dT) + #print(self.last) self.startDate=os.path.getmtime(os.path.join(self.path,'.lock')) except: return(False) return(True) + + def readText(self): + with open(self.fullname, 'r+') as fin: + cont=fin.read() + return cont def read_old(self): ''' @@ -297,6 +302,16 @@ ''' Class Runner consists of a single running or terminated instance of the trisurf. It manages starting, stopping, verifying the running process and printing the reports of the configured instances. ''' + + @property + def Dir(self): + return Directory(maindir=self.maindir,simdir=self.subdir) + + + @property + def Statistics(self): + return Statistics(self.Dir.fullpath(), "statistics.csv") + def __init__(self, subdir='run0', tape=None, snapshot=None, runArgs=[]): self.subdir=subdir self.runArgs=runArgs @@ -328,7 +343,7 @@ self.tape.setTape(tapetxt.text) def getPID(self): - self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) +# self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) #self.Dir.makeifnotexist() try: fp = open(os.path.join(self.Dir.fullpath(),'.lock')) @@ -339,7 +354,7 @@ return int(pid) def getLastIteration(self): - self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) +# self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) #self.Dir.makeifnotexist() try: fp = open(os.path.join(self.Dir.fullpath(),'.status')) @@ -350,7 +365,7 @@ return int(status) def isCompleted(self): - if (int(self.tape.getValue("iterations"))==self.getLastIteration()+1): + if int(self.tape.getValue("iterations"))+int(self.tape.getValue("inititer"))==self.getLastIteration()+1: return True else: return False @@ -386,7 +401,7 @@ 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) +# 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()): if(self.fromSnapshot==False): @@ -443,6 +458,8 @@ for p,v in zip(prefix,variables): if(v=="xk0"): tv=str(round(float(self.tape.config[v]))) + if sys.version_info<(3,0): + tv=str(int(float(self.tape.config[v]))) else: tv=self.tape.config[v] maindir=maindir+p+tv @@ -454,13 +471,13 @@ return def getStatistics(self, statfile="statistics.csv"): - self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) - self.statistics=Statistics(self.Dir.fullpath(), statfile) +# 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() 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(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="" @@ -475,25 +492,29 @@ else: statustxt="Running" - if(self.statistics.fileOK): - 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()] + if(self.Statistics.fileOK): + 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",statustxt, pid, str(self.Dir.fullpath()), self.Comment.getText()] return report def stop(self): - p=psutil.Process(self.getPID()) - p.kill() + try: + p=psutil.Process(self.getPID()) + p.kill() + except: + print("Could not stop the process. Is the process running? Do you have sufficient privileges?") + def writeComment(self, data, mode='w'): - self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) +# self.Dir=Directory(maindir=self.maindir,simdir=self.subdir) self.Comment=FileContent(os.path.join(self.Dir.fullpath(),".comment")) self.Comment.writefile(data,mode=mode) def getLastVTU(self): - vtuidx=self.getLastIteration() + vtuidx=self.getLastIteration()-int(self.tape.getValue("inititer")) if vtuidx<0: return None else: -- Gitblit v1.9.3