Dask Workers 激活了哪些线程?
What threads do Dask Workers have active?
当 运行 一个 Dask 工作者时,我注意到有一些额外的线程超出了我的预期。我应该从 Dask Worker 看到 运行 多少个线程,它们在做什么?
Dask workers 有以下线程:
- 运行 任务的线程池。这通常介于 1 和计算机上的逻辑核心数之间
- 一个管理线程来管理事件循环、通过(非阻塞)套接字进行通信、响应快速查询、将任务分配到工作线程等。
- 通信期间用于消息的可选压缩和(反)序列化的几个线程
- 一个线程来监视和分析以上两项
此外,默认情况下还有一个额外的 Nanny 进程负责监视 worker。此进程有几个自己的管理线程。
这些是截至 2018 年 10 月的内部详细信息,如有更改,恕不另行通知。
运行 遇到 "too many threads" 问题的人通常 运行ning 任务本身就是多线程的,因此会遇到 N 平方线程问题。通常这里的解决方案是使用像 OMP_NUM_THREADS=1
这样的环境变量,但这取决于您使用的确切库。
当 运行 一个 Dask 工作者时,我注意到有一些额外的线程超出了我的预期。我应该从 Dask Worker 看到 运行 多少个线程,它们在做什么?
Dask workers 有以下线程:
- 运行 任务的线程池。这通常介于 1 和计算机上的逻辑核心数之间
- 一个管理线程来管理事件循环、通过(非阻塞)套接字进行通信、响应快速查询、将任务分配到工作线程等。
- 通信期间用于消息的可选压缩和(反)序列化的几个线程
- 一个线程来监视和分析以上两项
此外,默认情况下还有一个额外的 Nanny 进程负责监视 worker。此进程有几个自己的管理线程。
这些是截至 2018 年 10 月的内部详细信息,如有更改,恕不另行通知。
运行 遇到 "too many threads" 问题的人通常 运行ning 任务本身就是多线程的,因此会遇到 N 平方线程问题。通常这里的解决方案是使用像 OMP_NUM_THREADS=1
这样的环境变量,但这取决于您使用的确切库。