[英]unpacking a dask delayed object of list of tuples
我有一个 function 返回两个元素的元组。 使用池星图调用 function 以生成一个元组列表,这些元组被解压缩为两个列表。
def func():
#...some operations
return (x,y)
def MP_a_func(func,iterable,proc,chunk):
pool=multiprocessing.Pool(processes=proc)
Result=pool.starmap(func,iterable,chunksize=chunk)
pool.close()
return Result
##
if __name__ == '__main__':
results=MP_a_func(func,iterable,proc,chunk)
a,b=zip(*results)
我现在希望使用 dask delayed
API 如下
if __name__ == '__main__':
results=delayed(MP_a_func(func,iterable,proc,chunk))
是否可以在不使用results.compute()
的情况下解压缩延迟的 object 中的元组?
感谢您的帮助
另一个延迟的 function 可以解包元组,在下面的示例中, return_tuple(1)
的延迟值没有计算,而是作为delayed
的 object 传递:
import dask
@dask.delayed
def return_tuple(x):
return x+1, x-1
@dask.delayed
def process_first_item(some_tuple):
return some_tuple[0]+10
result = process_first_item(return_tuple(1))
dask.compute(result)
根据nout
的回答,事实证明delayed
函数/装饰器没有参数,另请参阅此答案。
如果你知道输出的数量, delayed
的 function(或装饰器)需要一个可选的nout
arguments,这会将单个延迟拆分为许多延迟输出。 这听起来正是您所需要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.