我发布了使用分布式跨流程并行化的软件。
我想为我的用户关闭工作窃取,因为我发现由于上游使用了锁,它会导致一些不稳定。
我通过调度程序文件(通过dask-mpi创建)和LocalClusters为用户创建Client对象。如何在不安装过程的情况下为我的用户关闭工作窃取?
答案 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)