Bokeh和Joblib不能一起玩

时间:2017-01-10 18:12:25

标签: bokeh joblib

我有一个Bokeh脚本,它使用包含joblib的__call__()装饰器的函数调用数据。当我将脚本作为python脚本运行时,get_data函数很快(缓存)。当我使用@memory.cache调用它时,似乎缓存丢失并且重新评估函数,使数据检索变慢。如何使bokeh server --show code.py与Joblib完美配合?

1 个答案:

答案 0 :(得分: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

中看到此技巧

最后,对SO来说只是一些温和的建议。如果你可以包含一个最小的示例代码,那么极大地增加了能够在答案中获得代码的几率。例如,如果这里有示例代码我可以尝试工作,那么我将能够在答案中发布完整的工作代码。