music21.metadata.caching¶
JobProcessor¶
- class music21.metadata.caching.JobProcessor[source]¶
Processes metadata-caching jobs, either serially (e.g. single-threaded) or in parallel, as a generator.
Yields a dictionary of:
MetadataEntry instances
failed file paths
the last processed file path
the number of remaining jobs
>>> jobs = [] >>> mdb = corpus.corpora.CoreCorpus().search('monteverdi')[:3] >>> paths = [x.sourcePath for x in mdb]
>>> for corpusPath in paths: ... job = metadata.caching.MetadataCachingJob( ... corpusPath, ... parseUsingCorpus=True, ... corpusName='core', ... ) ... jobs.append(job) >>> jobGenerator = metadata.caching.JobProcessor.process_serial(jobs) >>> for result in jobGenerator: ... print(result['remainingJobs']) ... 2 1 0
JobProcessor methods
- static JobProcessor.process_parallel(jobs, processCount=None)[source]¶
Process jobs in parallel, with
processCountprocesses.If
processCountis none, use 1 fewer process than the number of available cores.jobs is a list of
MetadataCachingJobobjects.
- static JobProcessor.process_serial(jobs: list[MetadataCachingJob])[source]¶
Process jobs serially.
MetadataCachingJob¶
- class music21.metadata.caching.MetadataCachingJob(filePath, jobNumber=0, parseUsingCorpus=True, corpusName=None)[source]¶
Parses one corpus path, and attempts to extract metadata from it:
>>> job = metadata.caching.MetadataCachingJob( ... 'bach/bwv66.6', ... parseUsingCorpus=True, ... corpusName='core', ... ) >>> job.jobNumber 0 >>> job.corpusName 'core' >>> job.run() ((<music21.metadata.bundles.MetadataEntry 'bach_bwv66_6'>,), ()) >>> results = job.getResults() >>> errors = job.getErrors()
TODO: error list, not just numbers needs to be reported back up.
MetadataCachingJob read-only properties
- MetadataCachingJob.cleanFilePath¶
MetadataCachingJob methods
WorkerProcess¶
- class music21.metadata.caching.WorkerProcess(job_queue, result_queue)[source]¶
A worker process for use by the multithreaded metadata-caching job processor.
WorkerProcess methods