8 """Parallel version of IngestTask"""
11 return float(time)*len(parsedCmd.files)/numCores
14 def _makeArgumentParser(cls, *args, **kwargs):
15 """Build an ArgumentParser
17 Removes the batch-specific parts.
19 kwargs.pop(
"doBatch",
False)
20 kwargs.pop(
"add_help",
False)
25 """Run with a MPI process pool"""
29 args = parser.parse_args(config)
30 task =
cls(config=args.config)
35 """Run ingest on one file
37 This is a wrapper method for calling ``runFile``.
41 struct : `lsst.pipe.base.Struct`
42 Structure containing ``filename`` (`str`) and ``position`` (`int`).
43 args : `argparse.Namespace`
44 Parsed command-line arguments.
48 hduInfoList : `list` of `dict`
49 Parsed information from FITS HDUs, or ``None``.
51 filename = struct.filename
52 position = struct.position
54 return self.
runFile(filename,
None, args, position)
55 except IngestError
as exc:
56 self.
log.
warn(f
"Unable to ingest {filename}: {exc}")
63 We read and ingest the files in parallel, and then
64 stuff the registry database in serial.
69 dataList = [
Struct(filename=filename, position=ii)
for ii, filename
in enumerate(filenameList)]
74 context = self.register.openRegistry(root, create=args.create, dryrun=args.dryrun)
75 with context
as registry:
76 for hduInfoList
in infoList:
77 if hduInfoList
is None:
79 for info
in hduInfoList:
80 self.register.addRow(registry, info, dryrun=args.dryrun, create=args.create)