Чтобы улучшить скорость рендеринга, вы можете попробовать webgl JavaScript API
.Эта страница документации Bokeh Ускорение работы с WebGL объясняет, как это сделать.webgl
поддерживает круги, линии и большинство маркеров.Приложение:
p = Plot(output_backend="webgl") # for the glyph API
p = figure(output_backend="webgl") # for the plotting API
Имейте в виду, что пользователи сообщают о проблемах с webgl
, таких как заикание сюжета и т. Д., Но это может работать в вашем случае, в зависимости от того, какой тип глифов содержит ваш сюжет.
Также убедитесь, что ваши данные, передаваемые на график, не содержат NaN, поскольку, как известно, замедляют работу Bokeh.
Насколько мне известно, нет атрибута, который бы указывал, что рендерингзавершен или все еще продолжается , но вы можете подумать о некоторых других альтернативах для ускорения таких вещей, как сочетание Bokeh с Datashader (предварительный рендеринг больших наборов данных в растровое изображение фиксированного размера) или Dask (ускорение чтения данных из нескольких источников, например, из нескольких CSV-файлов)
Например, у вас может быть один стандартный график Bokeh, в котором вы делаете выбор и позволяете другим графикам генерироваться как Datashaderизображения и встраивать их в графики Bokeh.
В этом примере показано, как комбинировать Bokeh + Datashader, что значительно повышает производительность, особенно при наличии избыточного изображения.Обратите внимание, что каждый раз, когда к графику добавляется одна точка, вся область холста будет перерисовываться в браузере.Вот как работают браузеры.Datashader может предоставить одно изображение, поэтому обновление графика происходит намного быстрее, в то время как вы все еще можете использовать инструменты панели инструментов, такие как масштабирование, панорамирование и т. Д.
Также учитываются детали реализации кода Python.Использование, например, gridplot для связывания множества графиков может снизить производительность, поэтому лучше добавлять их один за другим в корневой каталог документа и т. Д. *