gpt4 book ai didi

python - dask.delayed 如何处理可变输入?

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:02 28 4
gpt4 key购买 nike

如果我有一个可变对象,例如一个字典,dask 如何处理将其作为输入传递给延迟函数?具体来说,如果我在延迟调用之间更新字典?

我尝试了以下示例,这似乎表明正在进行一些复制,但您能详细说明 dask 到底在做什么吗?

In [3]: from dask import delayed

In [4]: x = {}

In [5]: foo = delayed(print)

In [6]: foo(x)
Out[6]: Delayed('print-73930550-94a6-43f9-80ab-072bc88c2b88')

In [7]: foo(x).compute()
{}

In [8]: p1 = foo(x)

In [9]: x['a'] = 1

In [10]: p2 = foo(x)

In [11]: p1.compute()
{}

In [12]: p2.compute()
{'a': 1}

最佳答案

Dask 不支持可变输入。 Dask 预计输入不会改变。 Dask 还希望函数不会就地改变输入。

事实证明,同时支持突变和恢复力是很困难的。

在这种情况下,dask 似乎已将您的字典解构为另一个对象。字典在这种情况下很特殊。我不希望大多数可变对象出现这种行为

In [1]: from dask import delayed

In [2]: x = {}

In [3]: foo = delayed(print)

In [4]: p1 = foo(x)

In [5]: dict(p1.__dask_graph__())
Out[5]: {'print-26d52543-57fc-4873-9722-1a8fd2f1641c': (<function print>, (dict, []))}

关于python - dask.delayed 如何处理可变输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48650190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com