2017-01-10 35 views
0

我有一个使用包含joblib的@memory.cache装饰器的函数调用数据的Bokeh脚本。当我将脚本作为python脚本运行时,get_data函数很快(缓存)。当我使用bokeh server --show code.py调用它时,它看起来像缓存丢失并且函数被重新评估,这使得数据检索变得缓慢。如何使Bokeh与Joblib很好地协同工作?Bokeh和Joblib不会一起玩

回答

1

如果没有能够运行一个能够再现你所看到的例子,那么很难说。但我的猜测是,它与Bokeh服务器代码运行器在每个会话中执行应用程序脚本的方式有关。

所以,我可以考虑一些可能的事情来尝试。

首先,从0.12.4开始,有embedding a Bokeh server as a library的例子和指导,例如,在独立的Python脚本中,或者在Flask或Tornado应用程序中。那里的例子也都使用FunctionHandler,它不是exec。我的直觉是,这更像是标准的单进程/单命名空间python执行模型,并且可以更好地发挥您的joblib装饰器的作用。

(如果您尝试这条路线,和它的作品,请让使用者知道在某种程度上,这可能是值得记录要好。)

否则,可能会更好地工作就是用lifecycle hooks提供您的包裹功能的另一种选择这是确保在会话中共享的一种方式。你终于可以看到spectrogram example这种技术(C.F.的audio.py


,只是一些温和的建议这么久。如果你可以包含一个最小的示例代码,这大大增加了将代码返回给答案的可能性。例如,如果在这里有示例代码可以尝试工作,那么我可以在答案中发布完整的工作代码。

+0

Thanks @bigreddot –