Belle II Software development
MaxFilesSplitter Class Reference
Inheritance diagram for MaxFilesSplitter:
SubjobSplitter

Public Member Functions

 __init__ (self, *, arguments_generator=None, max_files_per_subjob=1)
 
 create_subjobs (self, job)
 
 assign_arguments (self, job)
 
 __repr__ (self)
 

Public Attributes

 max_files_per_subjob = max_files_per_subjob
 The maximum number of input files that will be used for each SubJob created.
 
 arguments_generator = arguments_generator
 The ArgumentsGenerator used when creating subjobs.
 

Detailed Description

 

Definition at line 211 of file backends.py.

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self,
* ,
arguments_generator = None,
max_files_per_subjob = 1 )
Parameters:
    max_files_per_subjob (int): The maximum number of input files used per `SubJob` created.

Definition at line 216 of file backends.py.

216 def __init__(self, *, arguments_generator=None, max_files_per_subjob=1):
217 """
218 Parameters:
219 max_files_per_subjob (int): The maximum number of input files used per `SubJob` created.
220 """
221 super().__init__(arguments_generator=arguments_generator)
222
223 self.max_files_per_subjob = max_files_per_subjob
224

Member Function Documentation

◆ __repr__()

__repr__ ( self)
inherited
 

Definition at line 205 of file backends.py.

205 def __repr__(self):
206 """
207 """
208 return f"{self.__class__.__name__}"
209
210

◆ assign_arguments()

assign_arguments ( self,
job )
inherited
Use the `arguments_generator` (if one exists) to assign the argument tuples to the
subjobs.

Definition at line 179 of file backends.py.

179 def assign_arguments(self, job):
180 """
181 Use the `arguments_generator` (if one exists) to assign the argument tuples to the
182 subjobs.
183 """
184 if self.arguments_generator:
185 arg_gen = self.arguments_generator.generator
186 generating = True
187 for subjob in sorted(job.subjobs.values(), key=lambda sj: sj.id):
188 if generating:
189 try:
190 args = arg_gen.send(subjob)
191 except StopIteration:
192 B2ERROR(f"StopIteration called when getting args for {subjob}, "
193 "setting all subsequent subjobs to have empty argument tuples.")
194 args = tuple() # If our generator finishes before the subjobs we use empty argument tuples
195 generating = False
196 else:
197 args = tuple()
198 B2DEBUG(29, f"Arguments for {subjob}: {args}")
199 subjob.args = args
200 return
201
202 B2INFO(f"No ArgumentsGenerator assigned to the {self} so subjobs of {job} "
203 "won't automatically have arguments assigned.")
204

◆ create_subjobs()

create_subjobs ( self,
job )
This function creates subjobs for the parent job passed in. It creates as many subjobs as required
in order to prevent the number of input files per subjob going over the limit set by
`MaxFilesSplitter.max_files_per_subjob`.

Reimplemented from SubjobSplitter.

Definition at line 225 of file backends.py.

225 def create_subjobs(self, job):
226 """
227 This function creates subjobs for the parent job passed in. It creates as many subjobs as required
228 in order to prevent the number of input files per subjob going over the limit set by
229 `MaxFilesSplitter.max_files_per_subjob`.
230 """
231 if not job.input_files:
232 B2WARNING(f"Subjob splitting by input files requested, but no input files exist for {job}. No subjobs created.")
233 return
234
235 for i, subjob_input_files in enumerate(grouper(self.max_files_per_subjob, job.input_files)):
236 job.create_subjob(i, input_files=subjob_input_files)
237
238 self.assign_arguments(job)
239
240 B2INFO(f"{self} created {i+1} Subjobs for {job}")
241
242

Member Data Documentation

◆ arguments_generator

arguments_generator = arguments_generator
inherited

The ArgumentsGenerator used when creating subjobs.

Definition at line 171 of file backends.py.

◆ max_files_per_subjob

max_files_per_subjob = max_files_per_subjob

The maximum number of input files that will be used for each SubJob created.

Definition at line 223 of file backends.py.


The documentation for this class was generated from the following file: