首页 > 解决方案 > DASK python库中的工人定义,为什么工人比cpu核心多

问题描述

我真的很困惑工人是什么。

一般来说,我会说 dask 集群中的一个节点,它可以根据调度程序的指令计算任务。但是,我认为单个节点可以是一个 cpu 核心,每个 worker 的线程数最多是每个 cpu 核心的线程数。在单台机器上工作时,我可以设置比笔记本电脑中的 CPU 内核更多的工作线程数,并且每个工作线程的线程数大于每个 cpu 内核的线程数。

那么当我设置本地集群时,实际上是什么工作人员?

它指的是我机器上的物理东西?

为什么没有错误出来?

在此处输入图像描述

标签: multiprocessingcpu-usagedaskworkercpu-cores

解决方案


您可以在系统上运行任意数量的线程——因为您拥有现代的多任务操作系统。操作系统负责唤醒线程并在 CPU 的核心中运行它们,在您的情况下,最多可以同时运行四个线程。因此,总共有四个以上的 dask 工作线程可能不符合您的利益。

您可以选择适合您的应用程序的工作程序(读取:进程)和线程数,其中进程不会被 GIL 相互阻塞,但线程可以有效地共享内存。


推荐阅读