DASK上的处理池

时间:2019-03-01 13:56:38

标签: python-2.7 dask dask-distributed

我是DASK的新手。

我可以使用client.map(funct_name,iterator)提交10个任务,其中iterator是一个包含10个元素的列表。

现在,我想提交下一个任务,比方说先前提交的10个任务中的任何一个都完成了,那就说第11个任务。

我知道python中有一种叫做进程池的东西。但是我想使用DASK来实现诸如进程池之类的东西。

请有人指导我进行DASK进程池。

2 个答案:

答案 0 :(得分:1)

您最容易做的就是在提交新作品之前使用wait

futs = client.map(funct_name, iterator)
distributed.wait(futs)
out = client.submit(eleventh, args)

但是,如果您想在前十个工作进行中时提交新工作,但是要让它自动等待所有工作完成,那么您可以构造一个伪造的任务,该工作显然取决于前一个工作,但不真正利用它们

futs = client.map(funct_name, iterator)

def run_eleventh(args, deps):
    return eleventh(args)

out = client.submit(run_eleventh, (args, futs))

答案 1 :(得分:0)

您可能要在这里查看as_completed对象:

http://docs.dask.org/en/latest/futures.html#waiting-on-futures

from dask.distributed import as_completed

futures = client.map(score, x_values)

for future in as_completed(futures):
    ...
    client.submit(...)