beetbox / beetbox/beets

Add concurrency support to autobpm processing

Open
#6,464 6 comments 0 reactions 0 assignees View on GitHub
autobpm
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.