我注意到,与两名工作人员分布的运行只会为每个工人使用一个核心。
下面的脚本作为示例大约需要20秒才能获得times2
,需要5秒才能获得times
。
这意味着每个工作人员使用单个核心执行4个任务,而不是使用所有4个核心并行执行。我还确认使用资源监视器只使用每个工作者一个核心。
为什么仅使用一个核心为worker而不是并行执行任务?
答案 0 :(得分:1)
因为您的函数是纯Python,所以它可能受GIL的约束。我建议更改您的工作人员,以便他们使用多个进程而不是多个线程。例如,如果运行dask-worker进程的计算机有四个核心,那么您可以按如下方式启动dask-worker进程:
dask-worker scheduler-address:8786 --nprocs 4 --nthreads 1