我试图从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个核心的工人?
答案 0 :(得分:2)
如果您的计算大部分都释放了GIL,则每个进程可能需要多个线程。如果您主要对数字数据进行Numpy,Pandas,Scikit-Learn,Numba / Cython编程,那么这是正确的。我可能会做六个进程,每个进程有八个核心。
如果您的计算大部分是纯Python代码,例如您处理文本数据,或者使用Python大量迭代dict / list / etc上的循环,那么每个进程将需要更少的线程,也许是两个。