dask.distributed中的信号量?

Chr*_*ing 5 dask dask-distributed

我有一个带有n个worker的dask集群,并希望worker对数据库进行查询.但是数据库只能并行处理m个查询,其中m <n.我如何在dask.distributed中对其进行建模?只有m个工人应该并行完成这项任务.

我已经看到分布式支持锁(http://distributed.readthedocs.io/en/latest/api.html#distributed.Lock).但有了这个,我只能并行执行一个查询,而不是m.

我也看到我可以为每个工人定义资源(https://distributed.readthedocs.io/en/latest/resources.html).但这也不合适,因为数据库独立于工人.我要么必须为每个worker定义1个数据库资源(这会导致太多的并行查询).或者我必须将m个数据库资源分配给n个工作者,这在设置集群和执行中次优时很困难.

是否可以在dask中定义类似信号量的东西来解决这个问题?

MRo*_*lin 1

你可能可以用锁和变量来破解一些东西。

一个更简洁的解决方案是像锁的实现方式一样实现信号量。根据您的经验,这可能并不难(锁实现有 150 行),并且会是一个受欢迎的拉取请求。

https://github.com/dask/distributed/blob/master/distributed/lock.py