dask 持久行为不一致

问题描述 投票:0回答:1

如果我注释掉这一行,我发现 dask 的奇怪行为仍然存在

# client = Client(memory_limit='20GB',n_workers=1)  # Connect to distributed cluster and override default

并执行

dd_feature_009a013a_normalized_noneedshift = dd_feature_009a013a_normalized_noneedshift.head(1000000,compute=False).persist()

坚持按预期运行..计算并存储在内存中,允许我立即访问结果 但是,如果我取消评论

client = Client(memory_limit='20GB',n_workers=1)  # Connect to distributed cluster and override default

然后

dd_feature_009a013a_normalized_noneedshift = dd_feature_009a013a_normalized_noneedshift.head(1000000,compute=False).persist()
dd_feature_009a013a_normalized_noneedshift = client.persist(dd_feature_009a013a_normalized_noneedshift)

什么也没做。延迟数据帧立即返回...当我打开时我该怎么做才能实现相同的行为

client = Client(memory_limit='20GB',n_workers=1)

python python-3.x dask dask-distributed
1个回答
3
投票

当我们使用

client.persist
持久化一个对象时,我们会得到一个 future,它指的是计算结果。计算完成后,结果将根据需要存储在一个或多个工作人员上。在现有的 future 上运行
client.persist
将返回另一个 future...因此对另一个计算的引用的引用,这可能是不必要的。

要获得未来的结果,可以对未来本身运行

.result()
。这将阻止进一步的命令,直到计算出未来并返回结果。

© www.soinside.com 2019 - 2024. All rights reserved.