Dask:为Visualize()最好选择哪个函数变量

时间:2019-05-13 14:43:20

标签: dask python-3.7 dask-delayed

我试图更深入地了解Dask的延迟,因此我决定通过示例here进行研究。我修改了一些代码以反映我想使用Dask的方式(请参见下文)。但是结果与我预期的不同。元组与列表。当我尝试应用'.visualize()'来查看执行图时,我什么也没得到。

我研究了“ delayed.ipynb”中的所有示例,它们都正常工作,包括所有可视化效果。然后,我为一个示例修改了“ for”循环:

for i in range(256):
    x = inc(i)
    y = dec(x)
    z = add(x, y)
    zs.append(z)

对函数的调用使用列表推导。结果是原始工作示例的变体。

%%time
import time
import random
from dask import delayed, compute, visualize

zs = []

@delayed
def inc(x):
    time.sleep(random.random())
    return x + 1

@delayed
def dec(x):
    time.sleep(random.random())
    return x - 1

@delayed    
def add(x, y):
    time.sleep(random.random())
    return x + y

def myloop(x):
    x.append([add(inc(i), dec(inc(i))) for i in range(8)])
    return x

result = myloop(zs)
final = compute(*result)
print(final)

我尝试打印出“结果”(函数调用),它提供了预期的延迟调用列表,但是当我打印“计算”的结果时,我出乎意料地将所需列表作为元组的一部分。为什么我没有一个清单?

当我尝试“可视化”执行图时,我什么也没得到。我期望看到的节点数量与生成的列表中的数量一样。

我认为我没有对示例进行任何重大修改,所以我不了解什么?

1 个答案:

答案 0 :(得分:0)

visualize函数具有与compute相同的呼叫签名。因此,如果您的compute(*result)通话正常,请尝试visualize(*result)