Public Access
move to a more standard python packaging structure
This commit is contained in:
1 parent
1322fd3835
commit
6abb338c4a
43 files changed
+245
-83
No files matched your search
@@ -0,0 +1,66 @@
|
||||
import os
|
||||
import os.path
|
||||
import shutil
|
||||
from damaris.experiments import Experiment
|
||||
|
||||
class ExperimentWriter:
|
||||
"""
|
||||
writes experiments in propper way to spool directory
|
||||
"""
|
||||
def __init__(self, spool, no=0, job_pattern="job.%09d", inform_last_job=None):
|
||||
self.spool=spool
|
||||
self.job_pattern=job_pattern
|
||||
self.no=no
|
||||
self.inform_last_job=inform_last_job
|
||||
# test if spool exists
|
||||
if not os.path.isdir(spool):
|
||||
os.mkdir(spool)
|
||||
|
||||
def send_next(self, job, quit=False):
|
||||
"""
|
||||
"""
|
||||
if quit and self.inform_last_job is not None:
|
||||
self.inform_last_job.stop_no=self.no
|
||||
self.inform_last_job=None
|
||||
job.job_id=self.no
|
||||
job_filename=os.path.join(self.spool,self.job_pattern%self.no)
|
||||
f=open(job_filename+".tmp","w")
|
||||
f.write(job.write_xml_string())
|
||||
f.flush()
|
||||
f.close() # explicit close under windows necessary (don't know why)
|
||||
del f
|
||||
# this implementation tries to satisfiy msvc filehandle caching
|
||||
os.rename(job_filename+".tmp", job_filename)
|
||||
#shutil.copyfile(job_filename+".tmp", job_filename)
|
||||
#try:
|
||||
# os.unlink(job_filename+".tmp")
|
||||
#except OSError:
|
||||
# print "could not delete temporary file %s.tmp"%job_filename
|
||||
|
||||
self.no+=1
|
||||
|
||||
def __del__(self):
|
||||
if self.inform_last_job is not None:
|
||||
self.inform_last_job.stop_no=self.no-1
|
||||
self.inform_last_job=None
|
||||
|
||||
class ExperimentWriterWithCleanup(ExperimentWriter):
|
||||
"""
|
||||
writes experiments and cleans up in front of queue
|
||||
"""
|
||||
def __init__(self, spool, no=0, job_pattern="job.%09d", inform_last_job=None):
|
||||
ExperimentWriter.__init__(self, spool, no, job_pattern, inform_last_job=inform_last_job)
|
||||
self.delete_no_files(self.no)
|
||||
|
||||
def send_next(self, job, quit=False):
|
||||
self.delete_no_files(self.no+1)
|
||||
ExperimentWriter.send_next(self,job,quit)
|
||||
|
||||
def delete_no_files(self,no):
|
||||
"""
|
||||
delete everything with this job number
|
||||
"""
|
||||
filename=os.path.join(self.spool,(self.job_pattern%no))
|
||||
if os.path.isfile(filename): os.unlink(filename)
|
||||
if os.path.isfile(filename+".tmp"): os.unlink(filename+".tmp")
|
||||
if os.path.isfile(filename+".result"): os.unlink(filename+".result")
|
||||
Reference in new issue
Block a user