Python 比预期完成时间长得多的任务
我注意到,使用两个工人进行分布式运行时,每个工人只使用一个核心 以下面的脚本为例,获取Python 比预期完成时间长得多的任务,python,Python,我注意到,使用两个工人进行分布式运行时,每个工人只使用一个核心 以下面的脚本为例,获取times2大约需要20秒,获取时间大约需要5秒 这意味着每个工人使用一个内核执行4个任务,而不是使用所有4个内核并行执行。我还确认,使用资源监视器时,每个工人只使用一个核心 为什么只为worker使用一个内核而不并行执行任务呢?因为您的函数是纯Python的,所以它可能受到GIL的约束。我建议更改工作线程,使其使用多个进程而不是多个线程。例如,如果运行dask工作进程的计算机有四个内核,则可以按如下方式启动d
times2
大约需要20秒,获取时间大约需要5秒
这意味着每个工人使用一个内核执行4个任务,而不是使用所有4个内核并行执行。我还确认,使用资源监视器时,每个工人只使用一个核心
为什么只为worker使用一个内核而不并行执行任务呢?因为您的函数是纯Python的,所以它可能受到GIL的约束。我建议更改工作线程,使其使用多个进程而不是多个线程。例如,如果运行dask工作进程的计算机有四个内核,则可以按如下方式启动dask工作进程:
dask-worker scheduler-address:8786 --nprocs 4 --nthreads 1
要确认,如果在4核8线程cpu上执行,启动命令是否为:dask worker scheduler address:8786--nprocs 4--nthreads 8
?我们通常为每个核启动一个线程--nthreads
可能应该重命名为--threads per process
这是否意味着--memory limit设置也为per core?当前--memory limit的值在所有进程之间分割