可以在python和瀏覽器中保持"模型對象"之間的同步,就會出現(xiàn)更多額外的強大可能性:
- 使用python的全部功能,通過計算或查詢響應瀏覽器中生成的UI和工具事件
- 自動將服務器端的數(shù)據(jù)更新推送到前端的展示
- 使用周期性瞄桨、超時和異步回調(diào)來驅(qū)動數(shù)據(jù)流更新
所以勤哗,在python和瀏覽器之間進行同步的功能是Bokeh服務器的主要用途缓苛。
Bokeh服務器的適用場景
本地部署盗誊,個人使用
創(chuàng)建一個可以在本地運行的小應用程序,或者您可以將其發(fā)送給同事在本地運行。在這個場景中寥袭,Bokeh服務器非常有用且易于使用。創(chuàng)建可部署的應用服務
發(fā)布交互式數(shù)據(jù)可視化和應用程序关霸,這些可視化和應用程序可以被更廣泛的受眾查看和使用(可能是在internet上传黄,也可能是在公司內(nèi)部網(wǎng)絡上)。分享發(fā)布
用于支持多用戶队寇,多應用的開發(fā)環(huán)境膘掰。一方面是構(gòu)架可用于執(zhí)行多個Bokeh服務實例的環(huán)境,另一個方面針對用戶或應用,可進行有效的區(qū)分和管理识埋。
構(gòu)建Bokeh應用程序
到目前為止凡伊,使用Bokeh服務器創(chuàng)建交互式數(shù)據(jù)可視化的最靈活方法是創(chuàng)建Bokeh應用程序,并使用Bokeh serve命令為它們提供服務窒舟。
在這個場景中系忙,Bokeh服務器使用應用程序代碼為所有連接的瀏覽器創(chuàng)建會話和文檔。
[圖片上傳失敗...(image-a94d18-1591083565242)]
Bokeh服務器使用應用程序代碼創(chuàng)建Bokeh文檔惠豺。來自瀏覽器的每個新連接都會導致Bokeh服務器為該會話創(chuàng)建一個新文檔银还。
一個簡單的Bokeh Server的例子
from bokeh.models import Slider, ColumnDataSource
from bokeh.io import curdoc
from bokeh.layouts import row
from bokeh.plotting import figure
from numpy.random import random
#Define the points that create the line plot
x = [1,2,3,4,5,6,7,8,9]
y = [2,3,4,5,6,7,8,9,10]
data_points = ColumnDataSource(data = {'x': x, 'y': y})
plot = figure(title = 'Random Line plot generator')
plot.line('x', 'y', source = data_points, color = 'red')
slider_widget = Slider(start = 0, end = 100, step = 1, value = 10)
def callback(attr, old, new):
points = slider_widget.value
data_points.data = {'x': random(points), 'y': random(points)}
slider_widget.on_change('value', callback)
layout = row(slider_widget, plot)
curdoc().add_root(layout)
使用boker server --show script_name.py 方式調(diào)用過程如下