【问题标题】:Dask progress during task任务期间的 Dask 进度
【发布时间】:2020-02-29 17:31:05
【问题描述】:

使用 dask 数据框
df = dask.dataframe.from_pandas(df, npartitions=5) series = df.apply(func) future = client.compute(series) progress(future)

在 jupyter 笔记本中,我可以看到每个分区完成多少 apply() 调用的进度条(例如 2/5)。
dask 有没有办法报告每个分区内的进度?
类似于 tqdm progress_apply() 对于熊猫。

【问题讨论】:

    标签: python pandas dask tqdm dask-dataframe


    【解决方案1】:

    如果您的意思是,func() 的每次调用有多完整,那么不,Dask 无法知道这一点。 Dask调用运行在自己的python线程中的python函数(python线程不能被另一个线程中断),而Dask只知道调用是否完成。

    您或许可以设想调用具有一些内部回调或其他报告系统的函数,但我认为我没有见过这样的事情。

    【讨论】:

    • 为什么不呢?每个数据帧行 Dask 调用 func,因此 Dask 知道每行何时完成 func(如 tqdm)。我想以某种方式注册一个“钩子”..
    • Dask 为每一行调用 func,它调用 pandas'apply
    • 有没有办法交换申请tqdm进度申请?或者,手动向 dask 报告进度
    • 是的,您可以为 apply 编写自己的包装器,以某种方式通知客户端,但这是未知领域,您只能靠自己。如果您只使用线程,前者可能是可能的,但我怀疑输出是否合理。
    猜你喜欢
    • 1970-01-01
    • 2018-08-08
    • 2019-05-23
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2013-03-21
    • 2011-11-02
    • 2019-06-11
    相关资源
    最近更新 更多