这是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)
答案 0 :(得分:1)
是的,这是有效的用法:您实际上是在声明bar
属性(它不是延迟函数的参数),不会对任何后续调用改变。当您说某事是“纯净的”时,Dask假定每次使用参数b=5
进行调用都会得到相同的结果。
请注意,如果多次调用具有相同dask_foo
值的b
,则每次生成的延迟对象的键将相同。如果您有pure=False
,则每次都会获得一个随机的UUID部分给密钥。
在这种情况下,您显然可以通过更改bar
的值来打破自己的断言:不要这样做!