繁体   English   中英

解包元组列表的延迟 object

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM