Использование Dask в Python для параллельного запуска функции - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь использовать Dask.delayed для параллельного вычисления функции. Функция BL.BLSN имеет 1 аргумент, который является строкой.

runs=['forcing.dat','forcing.dat','forcing.dat','forcing.dat','forcing.dat','forcing.dat']
dfs = [delayed(BL.BLSN)(fn) for fn in runs]

Когда я печатаю dfs, я получаю список отложенных объектов. Что я и ожидал.

[Задержка ('BLSN-630cb6bf-7104-4d41-b5fb-544116fec7ed'), задержка ('BLSN-150a5d45-073a-48af-af03-6e85f809617c'), задержка ('BLSN-481-af09-4a1f-be28-42358ef745e9 '), с задержкой (' BLSN-2f2f2cc1-76bc-4c29-839d-091255556f35 '), с задержкой (' BLSN-8aae0a06-d607-4a98-89a7-cfd2c'Slayed-11 (S) -11-SF-11-SF-11-SF-11-SF-11-SF11f0131a69-2bfd-4153-94c1-2d3ef4973772 ')

]

Однако, когда я пытаюсь:

dfs.compute()

, я получаю:

AttributeError: 'list' object has no attribute 'compute'

Каков наилучший способ вычисления для каждого объекта в списке?

1 Ответ

2 голосов
/ 01 ноября 2019

Вам нужна форма функции compute, а не метод:

import dask
dask.compute(*dfs)

Это будет выполняться параллельно (с обычными предостережениями), и если задачи совместно используют зависимости,они будут разделены разумно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...