如何让所有 worker 在 dask 中完成相同的任务?

How to let all worker do same task in dask?

我想让所有的工人做同样的任务,像这样:

from dask import distributed
from distributed import Client,LocalCluster
import dask
import socket


def writer(filename,data):
    with open(filename,'w') as f:
        f.writelines(data)

def get_ip(x):
    return socket.gethostname()
    #writer('/data/1.txt',a)
client = Client('192.168.123.1:8786')

A=client.submit(get_ip, 0,workers=['w1','w2'], pure=False)
print(client.ncores(),
        client.scheduler_info()
#       dask.config.get('distributed')
     )
A.result()  

我有2个工人,但只打印了1个工人的主机名

一个简单的方法来实现你想要的是使用Client.run方法

client.run(socket.gethostname)

这会在所有 worker 和 returns 所有结果上运行函数。它不使用普通的任务调度系统,它的设计目的与您想要的完全不同。