我正在尝试使用plotly dash 构建一个仪表板。我已将调试模式设置为 True。 每次我进行更改时,pandas 都会从头开始读取我的 Excel 文件,这本身会消耗大约 10 到 15 分钟。
无论如何,我的 df 是否可以存储在缓存或临时内存中,以便在调试或进行任何更改时,跳过读取文件部分并可以从缓存中读取?
基本上任何可以帮助我加快情节破折号过程的方法。
虽然这个问题很旧,但对于将来有同样问题的人来说还没有直接回答。
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)