绘图破折号中的缓存或临时内存

问题描述 投票:0回答:1

我正在尝试使用plotly dash 构建一个仪表板。我已将调试模式设置为 True。 每次我进行更改时,pandas 都会从头开始读取我的 Excel 文件,这本身会消耗大约 10 到 15 分钟。

无论如何,我的 df 是否可以存储在缓存或临时内存中,以便在调试或进行任何更改时,跳过读取文件部分并可以从缓存中读取?

基本上任何可以帮助我加快情节破折号过程的方法。

flask plotly-dash
1个回答
0
投票

虽然这个问题很旧,但对于将来有同样问题的人来说还没有直接回答。

Plotly dash 确实支持缓存数据。请参阅Plotly Dash 性能记忆。他们建议使用 flask-caching 库,它支持多种类型的缓存和存储。

您可以像这样初始化缓存:

cache = Cache(app.server, config={
    'CACHE_TYPE': 'filesystem'
})

然后使用函数装饰器

@cache.memoize(timeout=60 * 60)  # 1 hour in seconds
在应用程序中缓存回调或函数。

这是一个工作示例,其中回调需要 5 秒才能运行。第一次针对单选按钮选项运行后,几乎可以立即针对同一单选按钮选项再次运行它。 导入日期时间 导入时间 从 dash 导入 Dash、dcc、html、输入、输出、回调 从flask_caching导入缓存 应用程序 = Dash(名称)

timeout = 20
cache = Cache(app.server, config={
    "CACHE_TYPE": "filesystem",
    "CACHE_DIR": "./flask_cache",
})
app.layout = html.Div([
    html.Div(id='flask-cache-memoized-children'),
    dcc.RadioItems(
        [f"Option {i}" for i in range(1, 4)],
        'Option 1',
        id='flask-cache-memoized-dropdown'
    ),
    html.Div(f'Results are cached for {timeout} seconds')
])

@callback(
Output('flask-cache-memoized-children', 'children'),
Input('flask-cache-memoized-dropdown', 'value'))
@cache.memoize(timeout=timeout)  # in seconds
def render(value):
    current_time = datetime.datetime.now().strftime('%H:%M:%S')
    time.sleep(5) # Add delay for demonstration
    return f'Selected "{value}" at "{current_time}"'

if __name__ == "__main__":
    app.run(debug=True)
© www.soinside.com 2019 - 2024. All rights reserved.