dask.delayed是如何处理易变的输入的?[英] How does dask.delayed handle mutable inputs?

本文是小编为大家收集整理的关于dask.delayed是如何处理易变的输入的?的处理方法,想解了dask.delayed是如何处理易变的输入的?的问题怎么解决?dask.delayed是如何处理易变的输入的?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

如果我有一个可变的对象,假设一个dict,dask如何将传递作为输入延迟功能的输入?具体而言,如果我对延迟电话之间的dict进行更新?

我尝试了以下示例,这似乎表明正在进行一些复制,但是您能详细说明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, []))}

本文地址:https://www.itbaoku.cn/post/1793928.html