There are a few places where we can get easy speed boosts. We have a mix of speed via concurrency and speed via parallelism/c-extensions that don't 100 percent mesh. For example, the LSH computation is fast because it was written in Numba but it is used in a blocking fashion so we can't make progress on other async tasks while it is calculating.
Something like an asyncify function which tosses blocking functions into a thread executor (assuming they have big sections where they release the GIL) should let us await on thing like this (or things like the SVD in low-rank updates) and increase through put.
There are a few places where we can get easy speed boosts. We have a mix of speed via concurrency and speed via parallelism/c-extensions that don't 100 percent mesh. For example, the LSH computation is fast because it was written in Numba but it is used in a blocking fashion so we can't make progress on other async tasks while it is calculating.
Something like an
asyncifyfunction which tosses blocking functions into a thread executor (assuming they have big sections where they release the GIL) should let usawaiton thing like this (or things like the SVD in low-rank updates) and increase through put.