Я пытаюсь распараллелить следующий код ( MCVE ), создав граф задач, используя dask.delayed
(или , реализуя вычислительный граф сам):
os.chdir('./kitchen1')
write_dough() # writes file ./dough
write_topping() # writes file ./topping
write_pizza() # requires ./dough and ./topping; writes ./pizza
Я вижу 2 трудности:
write_dough
ничего не возвращает. z=x+y
проясняет зависимость между переменными; это не Dask не рекомендует полагаться на побочные эффекты . Есть ли идиоматическое решение c? os.chdir
. Как включить его в график вычислений? - Меня не волнует распараллеливание операций ввода-вывода, производительности и т. Д. c.
Вот мое текущее решение. Это добавляет сложности, и './kitchen1'
везде, что безобразно. Каким будет элегантное решение?
write_dough, write_topping, write_pizza = map(dask.delayed, (write_dough, write_topping, write_pizza))
dough = write_dough('./kitchen1')
topping = write_topping('./kitchen1')
pizza = write_pizza(dough, topping, './kitchen1')