Add concurrency support to autobpm processing
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 2.1k
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 31
Description
### Summary
Currently, `autobpm` processes tracks sequentially, which can be slow for large libraries. See implementation [here](https://github.com/beetbox/beets/blob/72b4c771612df3dbaee56c4460fe76297ddf9a87/beetsplug/autobpm.py#L58).
### Motivation
The current sequential approach does not fully utilize modern multi-core CPUs or high-throughput storage. By adding concurrency, `autobpm` could process multiple tracks simultaneously, reducing overall runtime for large libraries.
### References
* Original discussion: #6435
### Additional Notes
This seems like a straightforward optimization and could significantly improve processing time for users with large libraries.
Contributor guide
Research direction
Start by reading beetsplug/autobpm.py around line 58 and the original discussion in #6435 to understand the current sequential processing and the agreed concurrency approach. Done means autobpm processes multiple tracks concurrently and reduces runtime for large libraries without changing its processing results.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, performance
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100