我试图更深入地了解 Dask 的延迟,所以我决定在这里研究这些示例。我修改了一些代码以反映我想如何使用 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)
我尝试打印出“结果”(函数调用),它提供了预期的延迟调用列表,但是当我打印“计算”的结果时,我意外地将所需的列表作为元组的一部分。为什么我不得到一份清单?
当我尝试“可视化”执行图时,我什么也得不到。我期望在生成的列表中看到尽可能多的节点。
我认为我没有对示例进行任何重大修改,所以我不明白什么?