2

有没有更快的方法来只用 Dask 检索大型已发布数组中的单个元素而不检索整个数组?

在下面的示例中,client.get_dataset('array1')[0] 与 client.get_dataset('array1') 所用的时间大致相同。

import distributed
client = distributed.Client()
data = [1]*10000000
payload = {'array1': data}
client.publish(**payload)

one_element = client.get_dataset('array1')[0]
4

1 回答 1

4

请注意,您发布的任何内容都会发送给调度程序,而不是工作人员,因此这有点低效。Publish 旨在与 Dask 集合(如 dask.array)一起使用。

客户 1

import dask.array as da
x = da.ones(10000000, chunks=(100000,))  # 1e7 size array cut into 1e5 size chunks
x = x.persist()  # persist array on the workers of the cluster

client.publish(x=x)  # store the metadata of x on the scheduler

客户 2

x = client.get_dataset('x')  # get the lazy collection x
x[0].compute()  # this selection happens on the worker, only the result comes down
于 2017-07-20T21:39:19.357 回答