如何向客户端提交 map_blocks 操作

How to submit map_blocks operation to a Client

我正在尝试按块评估 dask 数组上的函数。我可以成功地做到以下几点:

import numpy as np
import dask.array as da
arr = np.random.randint(0, 9, (4, 4))
darr = da.from_array(arr, chunks=(2, 2))

def block_mean(block):
    return np.array([[block.mean()]])
r = darr.map_blocks(block_mean)
out_arr = r.compute()

如何在 Client 中复制它?我尝试了以下方法:

import numpy as np
import dask.array as da
arr = np.random.randint(0, 9, (4, 4))
darr = da.from_array(arr, chunks=(2, 2))

def block_mean(block):
    return np.array([[block.mean()]])
r = darr.map_blocks(block_mean)
c = Client()

# The following does not work
out = c.submit(r) 

为了保持简短:您根本不需要做任何事情;如果你定义一个Client,它将成为默认的调度器,而.compute()使用默认的调度器(除非指定)。

r = darr.map_blocks(block_mean)
c = Client()
out_arr = r.compute()

如果您阅读 submit 的文档,它需要一个函数 - 有很多关于如何使用它的示例。