From f8662aef73ff56dd49ba4184ba478d39ed222056 Mon Sep 17 00:00:00 2001 From: Ryan Van Quinlan Date: Thu, 9 Jul 2026 09:21:10 -0700 Subject: [PATCH] add atsrFreq flag to specify when to write an atsr file --- ats/atsMachines/lsf_asq.py | 1 + ats/atsMachines/slurmProcessorScheduled.py | 1 + ats/configuration.py | 4 ++++ ats/management.py | 9 ++++++++- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ats/atsMachines/lsf_asq.py b/ats/atsMachines/lsf_asq.py index 3f3f5f8..6f83331 100644 --- a/ats/atsMachines/lsf_asq.py +++ b/ats/atsMachines/lsf_asq.py @@ -200,6 +200,7 @@ def examineOptions(self, options): print("%s options.ompNumThreads = %s " % (DEBUG_LSF, options.ompNumThreads)) print("%s options.sleepBeforeSrun = %s " % (DEBUG_LSF, options.sleepBeforeSrun)) print("%s options.continueFreq = %s " % (DEBUG_LSF, options.continueFreq)) + print("%s options.atsrFreq = %s " % (DEBUG_LSF, options.atsrFreq)) print("%s options.verbose = %s " % (DEBUG_LSF, options.verbose)) print("%s options.debug = %s " % (DEBUG_LSF, options.debug)) print("%s options.info = %s " % (DEBUG_LSF, options.info)) diff --git a/ats/atsMachines/slurmProcessorScheduled.py b/ats/atsMachines/slurmProcessorScheduled.py index 4b1d776..c33f960 100644 --- a/ats/atsMachines/slurmProcessorScheduled.py +++ b/ats/atsMachines/slurmProcessorScheduled.py @@ -208,6 +208,7 @@ def examineOptions(self, options): print("%s options.ompNumThreads = %s " % (DEBUG_SLURM, options.ompNumThreads)) print("%s options.cpusPerTask = %s " % (DEBUG_SLURM, options.cpusPerTask)) print("%s options.continueFreq = %s " % (DEBUG_SLURM, options.continueFreq)) + print("%s options.atsrFreq = %s " % (DEBUG_SLURM, options.atsrFreq)) print("%s options.quiet = %s " % (DEBUG_SLURM, options.quiet)) print("%s options.verbose = %s " % (DEBUG_SLURM, options.verbose)) print("%s options.debug = %s " % (DEBUG_SLURM, options.debug)) diff --git a/ats/configuration.py b/ats/configuration.py index 25a2d4f..15e304d 100644 --- a/ats/configuration.py +++ b/ats/configuration.py @@ -318,6 +318,10 @@ def add_more_options(parser): help='''Frequency in minutes to write a continuation file. The default is to only write a continuation file at the end of the run, and only if any tests failed.''') + parser.add_option('--atsrFreq', type='float', default=None, + help='''Frequency in minutes to write result + files. The default is to only write a result file at + the end of the run.''') parser.add_option('--cutoff', dest = 'cuttime', help='''Over-rides job timelimit. All jobs will be TIMEOUT at this time. The value may be given as a digit followed diff --git a/ats/management.py b/ats/management.py index 0734845..4fa7e85 100644 --- a/ats/management.py +++ b/ats/management.py @@ -1014,6 +1014,9 @@ def run(self, interactiveTests): timeContinuation = time.time() # Convert minutes to seconds continuationStep = int(configuration.options.continueFreq * 60) + if configuration.options.atsrFreq is not None: + timeResult = time.time() + resultStep = int(configuration.options.atsrFreq * 60) while unfinished: timeNow = time.time() timePassed = timeNow - timeStatusReport @@ -1031,7 +1034,11 @@ def run(self, interactiveTests): if (timeNow-timeContinuation) >= continuationStep: self.continuationFile(interactiveTests, True) timeContinuation = timeNow - + if configuration.options.atsrFreq is not None: + timeNow = time.time() + if (timeNow-timeResult) >= resultStep: + self.saveResults() + timeResult = timeNow def getResults(self): """Returns an attribute dictionary containing the state of this