在自定义 Dask 图中包含关键字参数(kwargs)
Including keyword arguments (kwargs) in custom Dask graphs
正在使用 Dask 为一项操作构建自定义图表。熟悉如何在 Dask graph 中将参数传递给函数,并阅读了 docs。不过好像还是少了什么。
Dask 图中使用的函数之一采用关键字参数。尽管对如何将关键字参数传递给它感到困惑。其中一些关键字参数代表 Dask 对象,因此它们必须明确地出现在图中(即 functools.partial
将不起作用)。可以看到如下选项。
- 尝试以正确的位置顺序传递任何关键字参数。 (不适用于通用
**kwargs
或仅关键字参数)
- 编写一个包装器,将位置参数转换为关键字参数,并在图中使用它。 (工作正常,但有一些开销)
- 以某种方式将它们直接包含在图表中? (理想,但不清楚如何)
关于如何最好地做到这一点有什么想法吗?
一个常见的解决方法是使用 apply
函数
from dask.utils import apply
task = (apply, func, args, kwargs) # func(*args, **kwargs)
应编辑@MRocklin 的答案以符合较新的 dask 版本:
from dask.utils import apply
task = (apply, func, args, kwargs) # func(*args, **kwargs)
正在使用 Dask 为一项操作构建自定义图表。熟悉如何在 Dask graph 中将参数传递给函数,并阅读了 docs。不过好像还是少了什么。
Dask 图中使用的函数之一采用关键字参数。尽管对如何将关键字参数传递给它感到困惑。其中一些关键字参数代表 Dask 对象,因此它们必须明确地出现在图中(即 functools.partial
将不起作用)。可以看到如下选项。
- 尝试以正确的位置顺序传递任何关键字参数。 (不适用于通用
**kwargs
或仅关键字参数) - 编写一个包装器,将位置参数转换为关键字参数,并在图中使用它。 (工作正常,但有一些开销)
- 以某种方式将它们直接包含在图表中? (理想,但不清楚如何)
关于如何最好地做到这一点有什么想法吗?
一个常见的解决方法是使用 apply
函数
from dask.utils import apply
task = (apply, func, args, kwargs) # func(*args, **kwargs)
应编辑@MRocklin 的答案以符合较新的 dask 版本:
from dask.utils import apply
task = (apply, func, args, kwargs) # func(*args, **kwargs)