如何查看 Dask 计算任务的进度?

Posted

技术标签:

【中文标题】如何查看 Dask 计算任务的进度?【英文标题】:How to see progress of Dask compute task? 【发布时间】:2018-08-08 22:25:33 【问题描述】:

当我使用 Dask 运行计算任务时,我想在 Jupyter 笔记本上看到一个进度条,我正在从一个 +4GB 的大型 csv 文件中计算 id 列的所有值,有什么想法吗?

import dask.dataframe as dd

df = dd.read_csv('data/train.csv')
df.id.count().compute()

【问题讨论】:

你检查了吗:github.com/tqdm/tqdm? 【参考方案1】:

This resource 提供两种情况(本地和分布式)的完整代码示例以及有关使用 Dask Dashboard 的更多详细信息。

请注意,在 Jupyter 笔记本中工作时,您可能必须将 ProgressBar().register() 调用和要跟踪的计算调用(例如 df.set_index('id').persist())分成两个单独的单元格,以便实际显示进度条。

做:

不要这样做:

【讨论】:

【参考方案2】:

如果您使用的是单机调度程序,请执行以下操作:

from dask.diagnostics import ProgressBar
ProgressBar().register()

http://dask.pydata.org/en/latest/diagnostics-local.html

如果您使用的是分布式调度程序,请执行以下操作:

from dask.distributed import progress

result = df.id.count.persist()
progress(result)

或者只使用仪表板

http://dask.pydata.org/en/latest/diagnostics-distributed.html

【讨论】:

是否有机会在仪表板上查看完成任务的总时间? 一个单独的功能/任务?不会。任务包含任意 Python 代码,因此行为方式无法预测。 在运行 .register 时会在哪里看到进度条? 当我使用带有进度条的 dask 时,它只是冻结为零,同时产生足够的热量和 CPU 使用率,我认为它正在做某事。进度条如何更新? 这非常适合在 Kaggle 上运行 Dask,它似乎不支持仪表板(参见 kaggle.com/questions-and-answers/54405)

以上是关于如何查看 Dask 计算任务的进度?的主要内容,如果未能解决你的问题,请参考以下文章

如何设计可手动终止及查看当前进度的任务

如何查看mysql定时任务计划

如何在 Dask 中停止正在运行的任务?

Dask:我如何将我的代码与 dask 延迟并行化?

Dask - 如何取消并重新提交停滞的任务?

Dask分布式中如何高效提交大参数任务?