如何以编程方式关闭分布式工作窃取

时间:2018-03-18 00:58:56

标签: dask dask-distributed

我发布了使用分布式跨流程并行化的软件。

我想为我的用户关闭工作窃取,因为我发现由于上游使用了锁,它会导致一些不稳定。

我通过调度程序文件(通过dask-mpi创建)和LocalClusters为用户创建Client对象。如何在不安装过程的情况下为我的用户关闭工作窃取?

1 个答案:

答案 0 :(得分:0)

配置文件

您可以在config.yaml文件中更改以下行

work-stealing: False     # workers should steal tasks from each other

您也可以通过将环境变量DASK_WORK_STEALING设置为空字符串来设置此项,如下所示:

export DASK_WORK_STEALING=

编程

您可以在调度程序启动后在调度程序上运行以下命令:

scheduler.periodic_callbacks['stealing'].stop()

您可以考虑修改dask-mpi可执行文件来执行此操作(在该代码中搜索scheduler.start并在下一行运行)或者您的用户可以使用以下代码自行执行此操作:

def f(dask_scheduler):
    dask_scheduler.periodic_callbacks['stealing'].stop()
client.run_on_scheduler(f)