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

How to turn off distributed's work-stealing programatically

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

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

我从调度程序文件(通过 dask-mpi 创建)和 LocalClusters 为用户创建客户端对象。我怎样才能为我的用户关闭工作窃取而不让他们在安装过程中自己动手?

配置文件

您可以在他们的 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)