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 210 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 214 of file backends.py.

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

Member Function Documentation

◆ __repr__()

__repr__ ( self)
inherited
 

Definition at line 204 of file backends.py.

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

◆ 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 178 of file backends.py.

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

◆ 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 223 of file backends.py.

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

Member Data Documentation

◆ arguments_generator

arguments_generator = arguments_generator
inherited

The ArgumentsGenerator used when creating subjobs.

Definition at line 170 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 221 of file backends.py.


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