我正在尝试了解Dask-ML的Client()
函数参数。说我有使用Dask-ML的Client()
函数的以下代码:
from dask.distributed import Client
import joblib
client = Client()
如果我未在Client()
函数中为参数指定任何值,则参数的默认值为什么:
(i)n_workers
(ii)threads_per_worker
(iii)memory_limit
据我了解,Python具有全局解释器锁定(GIL)功能,该功能可防止多线程。如果是这样,当在Python中阻止多线程时,为什么Dask-ML的Client()
函数具有参数threads_per_worker
?
memory_limit
是指每个工作者/机器/节点允许的最大内存限制,还是指全部合并工作者/机器/节点所允许的最大内存限制?
我已经浏览过Dask-ML中的文档(请参见此处:https://docs.dask.org/en/latest/setup/single-distributed.html,但是关于上述这些问题的文档尚不清楚。
如果有人能解释一下,请先谢谢您?
在不带任何参数的情况下调用Client()
会默认启动LocalCluster()
,因此
client = Client()
与]确实相同>
cluster = LocalCluster() client = Client(cluster)
因此,开始时,您可以查看LocalCluster文档。
值取决于您的硬件和工作量。我们不预先知道您的工作量,但是我们知道您的硬件,因此我们尝试根据此做出明智的决定。什么是参数的默认值:
ideal
今天的政策是将所有逻辑核心和内存平均分配到拥有的核心数量的平方根中。因此,如果您有12个内核,那么我们将创建四个进程,每个进程具有三个线程。
在大多数情况下,这通常是可以的默认设置,但是我们建议您在不同情况下四处看看您的工作负载性能是否更好。