延时函数解包结果
Unpacking result of delayed function
在使用延迟转换我的程序时,我偶然发现了一种不适用于延迟的常用编程模式。示例:
from dask import delayed
@delayed
def myFunction():
return 1,2
a, b = myFunction()
a.compute()
提高:TypeError: Delayed objects of unspecified length are not iterable
而以下解决方法则不会。但是看起来笨拙了很多
from dask import delayed
@delayed
def myFunction():
return 1,2
dummy = myFunction()
a, b = dummy[0], dummy[1]
a.compute()
这是预期的行为吗?
中所述使用 nout=
关键字
@delayed(nout=2)
def f(...):
return a, b
x, y = f(1)
文档字符串
nout : int, optional
The number of outputs returned from calling the resulting ``Delayed``
object. If provided, the ``Delayed`` output of the call can be iterated
into ``nout`` objects, allowing for unpacking of results. By default
iteration over ``Delayed`` objects will error. Note, that ``nout=1``
expects ``obj``, to return a tuple of length 1, and consequently for
`nout=0``, ``obj`` should return an empty tuple.
在使用延迟转换我的程序时,我偶然发现了一种不适用于延迟的常用编程模式。示例:
from dask import delayed
@delayed
def myFunction():
return 1,2
a, b = myFunction()
a.compute()
提高:TypeError: Delayed objects of unspecified length are not iterable
而以下解决方法则不会。但是看起来笨拙了很多
from dask import delayed
@delayed
def myFunction():
return 1,2
dummy = myFunction()
a, b = dummy[0], dummy[1]
a.compute()
这是预期的行为吗?
nout=
关键字
@delayed(nout=2)
def f(...):
return a, b
x, y = f(1)
文档字符串
nout : int, optional
The number of outputs returned from calling the resulting ``Delayed``
object. If provided, the ``Delayed`` output of the call can be iterated
into ``nout`` objects, allowing for unpacking of results. By default
iteration over ``Delayed`` objects will error. Note, that ``nout=1``
expects ``obj``, to return a tuple of length 1, and consequently for
`nout=0``, ``obj`` should return an empty tuple.