dask:指定进程数

dask: specify number of processes

我正在尝试使用 dask 进行一些令人尴尬的并行处理。由于某些原因,我必须使用 dask,但可以使用 multiprocessing.Pool(5).map.

轻松完成任务

例如:

import dask
from dask import compute, delayed

def do_something(x): return x * x

data = range(10)
delayed_values = [delayed(do_something)(x) for x in data]
results = compute(*delayed_values, scheduler='processes')

它有效,但显然它只使用一个进程。

我如何配置 dask 以便它使用 5 个进程的池来进行此计算?

您可以将其配置为使用自定义进程池:

import dask
from multiprocessing.pool import Pool

dask.config.set(pool=Pool(5))

或作为上下文管理器:

with dask.config.set(scheduler='processes', num_workers=5):
    ...

您可能想阅读这篇文章dask_scheduling

或者我之前的

您可以使用num_workers参数指定compute方法的进程数。

results = compute(*delayed_values, scheduler='processes', num_workers=5)