Я нахожу документацию по Dask довольно запутанной. Скажем, у меня есть функция:
import random
import dask
def my_function(arg1, arg2, arg3):
val = random.uniform(arg1, arg2)
va2 = random.uniform(arg2, arg3)
return val1 + val2
some_list = []
for i in range(100):
some_num = dask.delayed(my_function)(arg1, arg2, arg3)
some_list += [some_num]
computed_list = dask.compute(*some_list)
Эта штука потерпит неудачу из-за того, что my_function()
не получит все 3 аргумента.
Как я могу распараллелить этот фрагмент кода в dask
?
РЕДАКТИРОВАТЬ:
Кажется, работает, если вы поместите декоратор @dask.delayed
поверх функции def
и вызовете его обычным образом, но теперь .compute()
-метод строка бросает:
KilledWorker: ('my_function-ac3c88f1-53f8-4d36-a520-ff8c40c6ee61', <Worker 'tcp://127.0.0.1:35925', name: 1, memory: 0, processing: 10>)
1 ответ
Сначала я строю граф, а затем вызываю на нем вычисление:
import random
import dask
@dask.delayed
def my_function(arg1, arg2, arg3):
val1 = random.uniform(arg1, arg2)
val2 = random.uniform(arg2, arg3)
return val1 + val2
arg1 = 1
arg2 = 2
arg3 = 3
some_list = []
for i in range(10):
some_num = my_function(arg1, arg2, arg3)
some_list.append(some_num)
graph = dask.delayed()(some_list)
# graph.visualize()
computed_list = graph.compute()
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.