Dask工作线程有哪些活动线程?

Dask工作线程有哪些活动线程?,dask,Dask,在运行Dask工作线程时,我注意到有一些额外的线程超出了我的预期。一个Dask工作线程应该运行多少个线程?它们在做什么?Dask工作线程有以下线程: 要在其中运行任务的线程池。这通常介于1和计算机上的逻辑核数之间 一个管理线程,用于管理事件循环、通过(非阻塞)套接字的通信、响应快速查询、将任务分配到工作线程等 两个线程,用于在通信期间对消息进行可选压缩和(反)序列化 一个线程用于监视和分析上述两项 此外,默认情况下还有一个额外的保姆流程来监视工人。此进程有两个自己的线程用于管理 这些是截至2

在运行Dask工作线程时,我注意到有一些额外的线程超出了我的预期。一个Dask工作线程应该运行多少个线程?它们在做什么?

Dask工作线程有以下线程:

  • 要在其中运行任务的线程池。这通常介于1和计算机上的逻辑核数之间
  • 一个管理线程,用于管理事件循环、通过(非阻塞)套接字的通信、响应快速查询、将任务分配到工作线程等
  • 两个线程,用于在通信期间对消息进行可选压缩和(反)序列化
  • 一个线程用于监视和分析上述两项
此外,默认情况下还有一个额外的保姆流程来监视工人。此进程有两个自己的线程用于管理

这些是截至2018年10月的内部详细信息,可能会在不另行通知的情况下更改


遇到“太多线程”问题的人通常运行的任务本身是多线程的,因此会出现N平方线程问题。通常,这里的解决方案是使用环境变量,如
OMP_NUM_THREADS=1
,但这取决于您使用的确切库。

接受您自己的答案有48小时的时间限制。这是否适用于所有调度程序/工作程序(特别是线程和单线程)?不,这仅适用于dask.distributed scheduler