如果我注释掉这一行,我发现 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)
?
当我们使用
client.persist
持久化一个对象时,我们会得到一个 future,它指的是计算结果。计算完成后,结果将根据需要存储在一个或多个工作人员上。在现有的 future 上运行 client.persist
将返回另一个 future...因此对另一个计算的引用的引用,这可能是不必要的。
要获得未来的结果,可以对未来本身运行
.result()
。这将阻止进一步的命令,直到计算出未来并返回结果。