如何避免将任务中的任务提交给主调度程序

How to avoid submitting dask tasks-within-tasks to main scheduler

task launch 文档显示 dask.compute 在 dask worker 中的默认行为是在主调度程序上启动任务。

我不想在主调度程序上启动。我的任务是执行两个步骤:使用非 python 二进制文件来处理复制到本地磁盘上的 0.1-1.0 TB 数据,然后使用 dask 将数据转换并写入 zarr 存储。二进制是多线程的,我也想以多进程或多线程本地方式在本地使用dask。

对于这个worker,我使用了一台多核机器,但是只为dask worker预留了一个线程。我相信这意味着我的任务可以在上述两个步骤中使用机器上的所有内核。

这是一个可行的模型吗,我将如何调用 computedistributed.Client().compute 似乎不起作用)?是否有其他方法可以 运行 我的二进制文件专门在机器上,并且 运行 我的并行 zarr 通过任务写入?

调用 dask.compute 时,您可以指定一个 scheduler= 选项,如下所示:

dask.compute(x, y, scheduler="processes")

有关详细信息,请参阅 https://docs.dask.org/en/latest/scheduling.html