我目前正在使用Bokeh制作多个图并生成其组件(script / div)。我将绘图对象传递给函数,根据函数中执行的计算向对象添加绘图线,然后将对象传递给main。我经常为不同的功能做这件事。与matplotlib相比,这似乎在运行我的程序时造成急剧减速 - 12分钟散景到1分钟matplotlib。
我认为这可能是由于复制了函数内外的值。每个绘图对象包含4条曲线,每条曲线约5000个点。该计划最多有16个地块。
是否有更好的方法来传入/传出绘图对象,还是应该在程序结束时绘制所有对象和格式以最小化开销?
答案 0 :(得分:1)
交互式,探索性用例和开发用例之间存在着不幸和不可避免的紧张关系。使Bokeh在Jupyter笔记本等中使用简单,方便和不引人注目意味着让它做一些" automagic"的东西。特别是有一个隐含的"当前文档",除非明确清除,否则使用更高级别API创建的所有都会在那里累积。简而言之,简短:对于这种应用程序,您应该明确地清除当前文档:
from bokeh.io import curdoc
curdoc().clear()
模板/渲染特定情节并完成后(即在您致电components
后)
如果您仍然需要更长时间地保留图表,请在致电components
后,然后您需要部分下拉到较低级别的API并明确创建自己的文档。这里的大多数示例都演示了手动创建文档: