Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kubernetes和Dask以及调度器_Python_Kubernetes_Dask - Fatal编程技术网

Python Kubernetes和Dask以及调度器

Python Kubernetes和Dask以及调度器,python,kubernetes,dask,Python,Kubernetes,Dask,我的代码看起来像这样 def myfunc(参数): #昂贵的东西需要2-3小时 mylist=[…] 客户机=客户机(…) mgr=DeploymentMgr() # ... 设置有状态集。。。 futures=client.map(myfunc,mylist,…,resources={mgr.hash.upper():1}) 客户收集(期货) 我在Kubernetes集群上运行dask。在程序开始时,我创建一个有状态集。这是通过kubernetes.client.AppsV1Api()完成

我的代码看起来像这样

def myfunc(参数):
#昂贵的东西需要2-3小时
mylist=[…]
客户机=客户机(…)
mgr=DeploymentMgr()
# ... 设置有状态集。。。
futures=client.map(myfunc,mylist,…,resources={mgr.hash.upper():1})
客户收集(期货)
我在Kubernetes集群上运行dask。在程序开始时,我创建一个有状态集。这是通过
kubernetes.client.AppsV1Api()
完成的。然后,我最多等待30分钟,直到我要求的所有工人都可用。在这个例子中,假设我请求10个工人,但30分钟后,只有7个工人可用。最后,我调用
client.map()
并将函数和列表传递给它。这个列表有10个元素。但是,dask将仅使用7名工人来处理此列表!即使在几分钟后剩余的3个工作线程可用,dask也不会为它们分配任何列表元素,即使第一个元素的处理都没有完成

我怎样才能改变达斯克的行为?有没有办法告诉dask(或dask的调度程序)定期检查新到达的工人,并更“正确”地分配工作?或者我可以手动影响这些列表元素的分布吗


谢谢。

一旦Dask更好地了解任务需要多长时间,它将平衡负载。您可以使用配置值估计任务长度

分布式:
调度程序:
默认任务持续时间:
myfunc:1小时
或者,一旦Dask完成其中一项任务,它将知道如何在未来围绕该任务做出决策


我相信这在GitHub问题跟踪程序上也出现过几次。您可能需要搜索更多信息。

谢谢您的帮助。我尝试设置默认任务持续时间,但还没有测试。在此之前,我用几个client.submit()调用替换了单个client.map()调用。然后我要求调度程序给我所有“正在运行”的工人的所有IP地址,然后在client.submit()的
workers
参数中使用这些IP地址。然而,这并没有解决问题。所以我希望默认的任务持续时间能够解决这个问题。