Выход (x**2, x**3)
представляет собой один tuple
, который не будет автоматически распакован;точно так же, как если вы передадите один tuple
в функцию с несколькими параметрами.
Но если вам не нравится *args
, вы могли бы распаковать кортеж.явно:
In [21]: def out(x):
...: x2, x3 = x
...: return (x2, 3*x3)
...:
In [22]: dsk = {'in': 2, 'f1': (lambda x:(x**2, x**3), 'in'), 'out': (out, 'f1')}
In [23]: dask.threaded.get(dsk, 'out')
Out[23]: (4, 24)
Или, если вы не возражаете, просто доступ к элементам по индексу:
In [27]: dsk = {'in': 2, 'f1': (lambda x: (x**2, x**3), 'in'), 'out': (lambda x: (x[0], 3*x[1]), 'f1')}
In [29]: dask.threaded.get(dsk, 'out')
Out[29]: (4, 24)