首页 > 解决方案 > dask 进程调度程序运行不佳

问题描述

我定义了一个 cpu-bound 函数

def countdown(n):
    while n > 0:
        n -= 1

在我的笔记本电脑上运行countdown(50000000)需要 2.16 秒。

首先,我测试multiprocess并行化。

from multiprocess import Pool
with Pool(2) as p:
    l=p.map(countdown,[50000000,50000000])

需要 2.46 秒,这是一个很好的并行化。

然后,我测试dask进程调度程序并行化

l=[dask.delayed(countdown)(50000000),dask.delayed(countdown)(50000000)]
dask.compute(l,scheduler='processes',num_workers=2)

但是,它需要 4.53 秒。这与速度相同

dask.compute(l,scheduler='threads',num_workers=2)

dask 进程调度程序有什么问题?我希望它应该与多进程相提并论

标签: pythonparallel-processingmultiprocessingdask

解决方案


以下工作,所以我不确定以上是错误还是功能:

from dask.distributed import Client

with Client(n_workers=2) as client:
    l=[dask.delayed(countdown)(50000000),dask.delayed(countdown)(50000000)]
    dask.compute(*l)

推荐阅读