Dask 达斯克:许多小工人对一个大工人

Dask 达斯克:许多小工人对一个大工人,dask,Dask,我试图从以下方面理解这个简单的例子: 我认为这意味着将有100个工作,每个工作使用36核 假设我可以在一个集群上使用48个内核 我应该使用48个核的1个工作线程还是每个核的48个工作线程?如果您的计算主要释放GIL,那么每个进程可能需要几个线程。如果您主要在数字数据上进行Numpy、Pandas、Scikit Learn、Numba/Cython编程,则这是正确的。我可能会做六个进程,每个进程有八个内核 如果您的计算大多是纯Python代码,例如,您处理文本数据,或者在dicts/list/et

我试图从以下方面理解这个简单的例子:

我认为这意味着将有100个工作,每个工作使用36核

假设我可以在一个集群上使用48个内核


我应该使用48个核的1个工作线程还是每个核的48个工作线程?

如果您的计算主要释放GIL,那么每个进程可能需要几个线程。如果您主要在数字数据上进行Numpy、Pandas、Scikit Learn、Numba/Cython编程,则这是正确的。我可能会做六个进程,每个进程有八个内核


如果您的计算大多是纯Python代码,例如,您处理文本数据,或者在dicts/list/etc上大量使用Python进行循环,那么您希望每个进程的线程数减少,可能需要两个。

哦,谢谢!很高兴能从核心开发人员那里得到答案:)对于在一台计算机上只使用一个核心的纯Python计算,为什么建议使用两个线程?如果愿意,可以使用一个线程。我建议尝试一些选择,看看什么最适合你的情况。
from dask_jobqueue import PBSCluster

cluster = PBSCluster(cores=36,
                    memory"100GB",
                    project='P48500028',
                    queue='premium',
                    walltime='02:00:00')

cluster.start_workers(100)  # Start 100 jobs that match the description above

from dask.distributed import Client
client = Client(cluster)    # Connect to that cluster