解压泳池地图创建的列表

时间:2019-11-05 14:22:52

标签: python pool

我有一个要并行化的代码

final_list = []
for module_packages in module_packages_list:
    for module_package in module_packages:
        final_list += parse_jdk_package(module_package)

它创建列表列表->基本上是结构[[items],[items]]

我想使用Pool并行化第二个循环。 我是这样做的

for module_packages in module_packages_list:
    with Pool(4) as p:
        final_list += p.map(parse_jdk_package, module_packages)

虽然确实变得更快,但它会在列表列表上创建其他列表。如何打开包装?我正试图这样做

final_list += zip(*p.map(parse_jdk_package, module_packages))

但是它变成了[([,而不是我从[[[获得的常规结果map

1 个答案:

答案 0 :(得分:0)

使用itertools.chain

if request.resolver_match:
    ...do stuff...

但是最好使用同一个池来计算所有内容:

def compute_pool(n, f, m):
    with Pool(n) as p:
        return p.map(f, m)

final_list = itertools.chain.from_iterable(
        compute_pool(4, parse_jdk_package, module_packages) for module_packages in module_packages_list
    )