我有一个要并行化的代码
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
答案 0 :(得分:0)
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
)