达斯克(Dask):许多小工人与大工人

时间:2018-10-06 11:39:06

标签: dask

我试图从dask-jobqueue documentation理解这个简单的例子:

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

我认为这意味着使用36个内核的每个作业将有100个。

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

我应该使用1个具有48个核心的工人还是48个每个具有1个核心的工人?

1 个答案:

答案 0 :(得分:2)

如果您的计算大部分都释放了GIL,则每个进程可能需要多个线程。如果您主要对数字数据进行Numpy,Pandas,Scikit-Learn,Numba / Cython编程,那么这是正确的。我可能会做六个进程,每个进程有八个核心。

如果您的计算大部分是纯Python代码,例如您处理文本数据,或者使用Python大量迭代dict / list / etc上的循环,那么每个进程将需要更少的线程,也许是两个。