Dask 在分布式衍生函数内部调用dark时丢失本地客户端
我试图在一个函数中执行一些任务操作,该函数通过分布式系统发送给一个工作者。下面是代码的简化版本Dask 在分布式衍生函数内部调用dark时丢失本地客户端,dask,Dask,我试图在一个函数中执行一些任务操作,该函数通过分布式系统发送给一个工作者。下面是代码的简化版本 client = Client(...) X_ = dask.array.from_array(...) X = dask.persist(X_) def func(X, b): with distributed.local_client() as c: with dask.set_options(get=c.get): return
client = Client(...)
X_ = dask.array.from_array(...)
X = dask.persist(X_)
def func(X, b):
with distributed.local_client() as c:
with dask.set_options(get=c.get):
return dask.lu_solve(X, b)
client.persist(dask.do(func)(X, b))
问题是,在对多个X
,b
实例执行操作时,有时它会工作,有时我会遇到异常Exception:Client not running。状态:已关闭
知道如何解决这个问题吗?当您将输入dask.array
X
和b
传递给dask.delayed函数时,它们作为numpy数组到达。我建议只使用NumPy函数
或者,也许你正试图完成其他事情
如果您想在dask.array上调用dask.array函数,可以在正常的python会话中进行。没有理由使用
本地\u客户端
谢谢您的快速回答!对于这种设计,我有几个原因:1)矩阵X
非常大(10s的GB);2)我实际的func
函数的复杂度比玩具示例略大*并且它将在各种X
实例中重复,因此我使用dask/distributed来尴尬地并行化问题的这一部分。我是否达到了普通dask用例的极限?(*实际上func
是一个类的\uuuu init\uuuu
,该类在dask数组上执行计算,然后保存其中的一些以便进一步计算。)您需要考虑如何跨分布式数组并行化函数f
。Dask不会为您深入了解自定义代码。您可能需要查看map_块或dask.delayed。