1

我正在做类似于动态映射的事情,并在文档中收集示例。该示例列出目录中的文件,将每个文件映射到计算文件大小的实体,然后收集输出以汇总总体大小。

但是,我想在每个实体上并行运行多个实体。所以继续这个例子:我将列出目录中的文件;然后映射,以便我为每个文件计算大小,检查文件权限,并并行计算 md5sum;最后收集输出。

我可以在每个文件上按顺序运行它们,例如:

file_results = list_files()
.map(compute_size)
.map(check_permissions)
.map(compute_md5sum)
summarize(file_results.collect())

但是,如果这些实际上不是串行依赖项,那么并行处理每个文件的工作会很好。有没有这样的语法:

file_results = list_files().map(
compute_md5sum(check_permissions(compute_size)))
summarize(file_results.collect())
4

1 回答 1

2

如果我理解正确,这样的事情应该可以完成您正在寻找的东西:

def _process_file(file):
    size = compute_size(file)
    perms = check_permissions(file)
    hash = compute_md5sum(file)
    return summarize_file(size, perms, hash)


file_results = list_files().map(_process_file)
summarize(file_results.collect)
于 2021-07-21T15:48:30.287 回答