Analyse tracks in a pool of worker processes
A first pass over an unanalysed library is hours of librosa, and there was no reason for a desktop to spend them one core at a time. Analysis now runs in a process pool sized by `general.library.analysis_workers`, defaulting to one per core bar one (capped at 8) when the key is absent. Two consequences worth knowing before touching this: whatever an `Analyzer` returns has to be picklable, and an analyzer that keeps state on its own instance - a test double counting calls - only behaves as written with `analysis_workers=1`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -123,3 +123,7 @@ reported at once.
|
||||
and size, so **a change to how the scanner derives a title, artist or series is
|
||||
invisible until the cache is invalidated** — bump `_INDEX_VERSION` in
|
||||
`musicmouse/library/cache.py` when you touch that logic.
|
||||
- Track analysis (librosa) runs in a pool of worker *processes* - see
|
||||
`musicmouse/library/workers.py`. Anything an `Analyzer` returns therefore has to be
|
||||
picklable, and an analyzer that records state in its own instance (a test double
|
||||
counting calls) only behaves as written with `analysis_workers=1`.
|
||||
|
||||
Reference in New Issue
Block a user