从 dask 对象查看 dask 图

Posted

技术标签:

【中文标题】从 dask 对象查看 dask 图【英文标题】:Viewing dask graph from a dask object 【发布时间】:2018-05-04 05:14:04 【问题描述】:

在 Dask (2015) 上 Matthew Rocklin 的 presentation 中,他展示了一个查看 dask graph 底层 dask.array 的示例:

自那以后,该属性的表示似乎发生了一些变化:

import dask.array as da
x = da.arange(15, chunks=(5,))
print(x.dask)
# <dask.sharedict.ShareDict object at 0x000001FD8869C2E8>

for k, v in x.dask.items():
    print(k)
    print(v)
    print()
# ('arange-367e8f921d6d8a8e494d9e8e9a7f5425', 0)
# (<function arange at 0x000001FD8857D158>, 0, 5, 1, 5, dtype('int32'))
# 
# ('arange-367e8f921d6d8a8e494d9e8e9a7f5425', 1)
# (<function arange at 0x000001FD8857D158>, 5, 10, 1, 5, dtype('int32'))
# 
# ('arange-367e8f921d6d8a8e494d9e8e9a7f5425', 2)
# (<function arange at 0x000001FD8857D158>, 10, 15, 1, 5, dtype('int32'))

如何重现该行为以从上方查看 dask.graph 的基本(旧)形式?

【问题讨论】:

【参考方案1】:

您可以通过调用dictShareDict 对象转换为普通的dict 对象。

>>> dict(x.dask)

但是,输出将比以前的版本更详细(如论文中所示)。然而,当前版本在许多方面都更安全,即使它在美学上不太令人愉悦。

【讨论】:

所以,当我这样做时,我得到了上面稍微混乱的表示(通过在可迭代的 x.dask.items() 上打印。有没有办法从你的论文中获得更精简的版本? 基本上,看起来它们实际上具有相同的结构,但例如,“x”被替换为“arange-367​​e8f921d6d8...”。 简而言之,不,当前版本没有。然而,当前版本在许多方面都更安全,即使它在美学上不太令人愉悦。

以上是关于从 dask 对象查看 dask 图的主要内容,如果未能解决你的问题,请参考以下文章

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

使用带有cythonized类的dask。酸洗对象方法时出错

compute() 在 dask 中做啥?

如何查看Dask Compute任务的进度?

与 Dask 共享内存

在 dask 产生的进程中调用 dask