类方法纯粹是傻吗?

时间:2018-06-30 00:33:18

标签: dask

这是Dask中pure的有效使用吗?

让我们假设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 :(得分:1)

是的,这是有效的用法:您实际上是在声明bar属性(它不是延迟函数的参数),不会对任何后续调用改变。当您说某事是“纯净的”时,Dask假定每次使用参数b=5进行调用都会得到相同的结果。 请注意,如果多次调用具有相同dask_foo值的b,则每次生成的延迟对象的键将相同。如果您有pure=False,则每次都会获得一个随机的UUID部分给密钥。

在这种情况下,您显然可以通过更改bar的值来打破自己的断言:不要这样做!