我已经注意到,使用两个工作进程运行分布式只会使用每个工作进程一个核心。
以下面的脚本为例,获取times2
大约需要20秒,获取times
大约需要5秒。
这意味着每个工作者使用单个核心执行4个任务,而不是使用所有4个核心并行执行。我还确认,使用资源监视器时,每个worker只使用一个核心。
为什么分布式只为worker使用一个核心,而不是并行执行任务?
发布于 2017-02-26 00:59:32
因为您的函数是纯Python,所以它可能由GIL绑定。我建议更改您的工作进程,以便它们使用多个进程而不是多个线程。例如,如果运行dask-worker进程的计算机有四个核心,则可以按如下方式启动dask-worker进程:
dask-worker scheduler-address:8786 --nprocs 4 --nthreads 1
https://stackoverflow.com/questions/42458768
复制相似问题