¿Cómo enviar eficientemente tareas con grandes argumentos en Dask distribuido?

Quiero enviar funciones con Dask que tengan argumentos grandes (escala de gigabytes). ¿Cuál es la mejor manera de hacer esto? Quiero ejecutar esta función muchas veces con diferentes parámetros (pequeños).

Ejemplo (malo)

Esto usa la interfaz concurrent.futures. Podríamos usar la interfaz dask.delayed con la misma facilidad.

x = np.random.random(size=100000000)  # 800MB array
params = list(range(100))             # 100 small parameters

def f(x, param):
    pass

from dask.distributed import Client
c = Client()

futures = [c.submit(f, x, param) for param in params]

Pero esto es más lento de lo que esperaba o da como resultado errores de memoria.

Respuestas a la pregunta(1)

Su respuesta a la pregunta