使用Dask计算会导致执行挂起[英] Using Dask compute causes execution to hang

本文是小编为大家收集整理的关于使用Dask计算会导致执行挂起的处理方法,想解了使用Dask计算会导致执行挂起的问题怎么解决?使用Dask计算会导致执行挂起问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

这是对我以前关于使用DASK的一个问题之一的潜在答案的后续问题-large-publined-array-with-dask">访问大型数组中的一个元素.

为什么使用dask计算会导致执行悬挂在下面? 这是工作代码段:

#Suppose you created a scheduler at the ip address of 111.111.11.11:8786


from dask.distributed import Client
import dask.array as da

# client1
client1 = Client("111.111.11.11:8786")
x = da.ones(10000000, chunks=(100000,))  # 1e7 size array cut into 1e5 size chunks
x = x.persist()
client1.publish_dataset(x=x)

# client2
client2 = Client("111.111.11.11:8786")
x = client2.get_dataset('x')  #get the lazy collection x
result = x[0].compute() #code execution hangs here
print(result)

推荐答案

persist的行为不同,具体取决于您是否有分布式客户端处于活动状态.在您的情况下,您在制作任何客户端之前将其调用,结果将整个数据包装到图形描述中.这种行为在螺纹调度程序上是可以的,在工人之间共享内存,但是当您发布时,您将整个内容发送给调度程序,显然它正在窒息.

如果首先制作client1,您会注意到持续存在很快发生(在这种情况下,调度程序仅获得数据的指示),并且发布fetch周期将按预期工作.

.

本文地址:https://www.itbaoku.cn/post/1793930.html