Dash 2.18.2版本更新:模式匹配回调性能大提升

本文示例代码已上传至我的Github仓库:https://github.com/CNFeffery/dash-master

Gitee同步仓库地址:https://gitee.com/cnfeffery/dash-master

大家好我是费老师,今天Dash发布了2.18.2版本更新,虽然只是一次小版本更新,但其中涉及到的一些内容还是非常重要的,今天的文章中我就来为大家做相关介绍。

终端执行下列命令将Dash升级到最新版本:

bash 复制代码
pip install dash -U

模式匹配回调函数性能大幅提升

在先前的版本中,基于ALL模式匹配构建的回调函数,当涉及的组件数量非常多时,在触发回调函数时会存在明显的卡顿。

举个简单的例子,我们在页面中渲染了1000 个开关组件,通过ALL模式匹配回调,实时统计多少 开关处于打开 状态,在未更新前的2.18.1版本下,可以看到每次操作开关时,都伴随着明显的卡顿:

而更新到2.18.2之后,那叫一个丝滑🥳:

示例对应源码如下:

app.py

python 复制代码
import dash
from dash import html
import feffery_antd_components as fac
from feffery_dash_utils.style_utils import style
from dash.dependencies import Input, Output, ALL

app = dash.Dash(__name__)

app.layout = html.Div(
    [
        f"Dash版本:{dash.__version__}",
        html.Div(
            fac.AntdSpace(
                [
                    fac.AntdSwitch(
                        id={"type": "test-switch", "index": i}, checked=False
                    )
                    for i in range(1000)
                ],
                wrap=True,
            ),
            style=style(
                height=300, overflow="auto", padding=5, border="1px solid #bfbfbf"
            ),
        ),
        fac.AntdText("已打开开关数量:0", id="test-output"),
    ],
    style=style(padding=50),
)

app.clientside_callback(
    "(checked_list) => `已打开开关数量:${checked_list.filter(Boolean).length}`",
    Output("test-output", "children"),
    Input({"type": "test-switch", "index": ALL}, "checked"),
    prevent_initial_call=True,
)

if __name__ == "__main__":
    app.run(debug=True)

除此之外,此次版本更新中还为常规回调对应的dash.ctx上下文新增了cookiesheaderspathremoteorigin等属性,完整的更新内容说明请移步https://github.com/plotly/dash/releases/tag/v2.18.2


以上就是本文的全部内容,对Dash应用开发感兴趣的朋友,欢迎添加微信号CNFeffery,备注"dash学习"加入我们的技术交流群,一起成长一起进步。

相关推荐
天才测试猿27 分钟前
常见的Jmeter压测问题
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·压力测试
mortimer28 分钟前
一次与“顽固”外部程序的艰难交锋:subprocess 调用exe踩坑实录
windows·python·ai编程
来自天蝎座的孙孙2 小时前
洛谷P1595讲解(加强版)+错排讲解
python·算法
张子夜 iiii3 小时前
机器学习算法系列专栏:主成分分析(PCA)降维算法(初学者)
人工智能·python·算法·机器学习
跟橙姐学代码4 小时前
学Python像学做人:从基础语法到人生哲理的成长之路
前端·python
Keying,,,,4 小时前
力扣hot100 | 矩阵 | 73. 矩阵置零、54. 螺旋矩阵、48. 旋转图像、240. 搜索二维矩阵 II
python·算法·leetcode·矩阵
桃源学社(接毕设)4 小时前
基于人工智能和物联网融合跌倒监控系统(LW+源码+讲解+部署)
人工智能·python·单片机·yolov8
yunhuibin5 小时前
pycharm2025导入anaconda创建的各个AI环境
人工智能·python
杨荧5 小时前
基于Python的电影评论数据分析系统 Python+Django+Vue.js
大数据·前端·vue.js·python
python-行者5 小时前
akamai鼠标轨迹
爬虫·python·计算机外设·akamai