我们如何选择通过kubernetes上的helm分布式运行的dask中每个工作人员的N读数据和NPROC?

我们如何选择通过kubernetes上的helm分布式运行的dask中每个工作人员的N读数据和NPROC?,kubernetes,google-kubernetes-engine,dask,dask-distributed,Kubernetes,Google Kubernetes Engine,Dask,Dask Distributed,我正在Dask上运行一些I/O密集型Python代码,希望增加每个工作线程的数量。我已经部署了一个Kubernetes集群,它运行通过分发的Dask。我从中看到,工作线程的数量设置为CPU的数量,但我想将线程的数量设置得更高,除非这是反模式。我该怎么做 看起来我可以通过ssh连接到dask调度程序,并使用dask worker启动worker?但理想情况下,我可以通过helm配置worker资源,这样我就不必与调度器交互,只需通过客户机向其提交作业 Python中的线程处理是一门非常细致的艺术,

我正在Dask上运行一些I/O密集型Python代码,希望增加每个工作线程的数量。我已经部署了一个Kubernetes集群,它运行通过分发的Dask。我从中看到,工作线程的数量设置为CPU的数量,但我想将线程的数量设置得更高,除非这是反模式。我该怎么做


看起来我可以通过ssh连接到dask调度程序,并使用
dask worker
启动worker?但理想情况下,我可以通过helm配置worker资源,这样我就不必与调度器交互,只需通过
客户机向其提交作业

Python中的线程处理是一门非常细致的艺术,它实际上取决于您的代码。简单来说,-nproc几乎肯定应该是1,如果您想要更多的进程,请启动更多的副本。对于线程计数,首先要记住GIL意味着一次只能有一个线程运行Python代码。因此,您只能在两种主要情况下获得并发性增益:1)一些线程在I/O上被阻塞,比如等待数据库或web API的回复;2)一些线程在NumPy或friends中运行非GIL绑定的C代码。对于第二种情况,您仍然无法获得比CPU数量更多的并发性,因为这只是一次要运行的插槽数量,但在某些情况下,第一种情况可以受益于比CPU更多的线程

Kubernetes资源限制和请求应与dask worker命令的--memory limit和--nthreads参数匹配。有关更多信息,请遵循链接(Dask官方文档中描述的最佳实践)和

Dask的掌舵图有一个限制,不允许在图表中设置--n读数。我向Dask团队确认了这一点,并提出了一个问题:

同时,用于更高程度的定制