Dask 如何关闭分布式';我们的工作是程序化的

Dask 如何关闭分布式';我们的工作是程序化的,dask,dask-distributed,Dask,Dask Distributed,我发布的软件使用分布式来跨进程并行化 我想为我的用户关闭工作窃取,因为我发现它会导致一些不稳定,因为上游使用了锁 我从调度器文件(通过dask mpi创建)和本地集群为用户创建客户端对象。我如何才能在不让用户在安装过程中自己动手的情况下为用户关闭工作窃取功能?Config file 您可以在config.yaml文件中更改以下行 work-stealing: False # workers should steal tasks from each other 您还可以通过将环境变量DA

我发布的软件使用分布式来跨进程并行化

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

我从调度器文件(通过dask mpi创建)和本地集群为用户创建客户端对象。我如何才能在不让用户在安装过程中自己动手的情况下为用户关闭工作窃取功能?

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

work-stealing: False     # workers should steal tasks from each other
您还可以通过将环境变量
DASK_WORK_
设置为空字符串来进行设置,如下所示:

export DASK_WORK_STEALING=
编程的 启动计划程序后,可以在其上运行以下操作:

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

您可以考虑修改DASK MPI可执行程序来执行此操作(搜索<代码>调度程序。在该代码中启动< /代码>,并在下一行上运行)或您的用户可以用以下代码自己执行:

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

必须在运行“启动”后执行此操作吗?以下操作不起作用:``>>>来自分布式导入客户端>>>客户端=客户端()>>>def f(dask_调度程序):。。。dask_调度程序。定期_回调['steering'].stop()…>>根据我的理解,在调度程序(f)上运行应该可以。如果没有,那么我建议构建一个可重复性最低的失败示例,并将其包含在github.com/dask/distributed/issues/new的bug报告中。我还添加了一个带有环境变量的解决方案,以防您更容易使用。