Методы класса чисты в сумерках? - PullRequest
0 голосов
/ 30 июня 2018

Это допустимое использование pure в Dask?

Предположим, что bar никогда не изменяется во время вычисления, но оно может измениться, пока я настраиваю вычисление.

from dask import delayed


class a:
    def __init__(self):
        self.bar = 1
    def foo(self, b):
        return self.bar + b
    def dask_foo(self, b):
        return delayed(self.foo, pure=True)(b)

1 Ответ

0 голосов
/ 30 июня 2018

Да, это допустимое использование: вы фактически утверждаете, что атрибут bar, который не является аргументом для отложенной функции, не изменится ни для каких последующих вызовов. Когда вы говорите, что что-то «чисто», Dask предполагает, что вызов с аргументом b=5 будет каждый раз получать один и тот же результат. Обратите внимание, что если вы вызываете dask_foo с одним и тем же значением b несколько раз, ключ получающегося отложенного объекта будет каждый раз одинаковым. Если у вас pure=False, вы каждый раз получаете случайную часть UUID для ключа.

В этом случае вы, очевидно, можете нарушить собственное утверждение, изменив значение bar: не делайте этого!

...