Sorry, something went wrong.
|
No more jitter and jiggly effect in x_range_mode="auto"! Rock-solid. no-jitter-2026-05-11_03.16.52.mp4IO such as video decoding in an independent process + new async lets us get 120+fps easily. We still get ~100fps+ rendering when we set the playback fps to 100. With the previous generator-as-a-coroutine simpler async without rendercanvas scheduling we got ~60fps, so we can get almost double the fps with this proper async that uses rendercanvas scheduling! 🥳 . The decoder does get stuck for a few seconds if a huge backlog piles up I think, but from inspecting the stack this lag comes from the decoder. Anyways the frame corresponding to the latest indices do appear within a few seconds and I think it's unlikely a user will be scrolling such that they request 100 different random frames/second for long periods of time, or playback at > 100fps. gerbies-async-2026-05-11_03.25.59.mp4With masknmf demixing results with many subplots etc. (this) I get ~28fps with the new propery async, 17 fps before. |
Sorry, something went wrong.
This replaces the generator-as-a-couroutine with proper full async and uses rendercanvas's existing loop for scheduling. Throttling behavior is much more natural now and IO never blocks rendering even when waiting for Futures to resolve. The entire pipeline from getting the raw data --> window_funcs --> spatial_func is async and fully concurrent.
closes #1042
@apasarkar this should allow concurrent running of window_funcs and spatial_funcs written using torch that stay on the device until the very end, ex: torch.mean() for rolling mean windows instead of np.mean.
@BalzaniEdoardo