繁体   English   中英

多处理列表理解/过滤器

[英]Multiprocessing List Comprehension/Filter

我正在尝试对列表理解进行多处理:

l = [i for i in range(10) if fun(i)]

如果我保留列表中的所有值,我可以简单地调用pool.map ,但此循环可能不会保留所有值。

我怎样才能 go 实现这个?

使用 itertools.compress 过滤 pool.map 的结果。

这是使用过滤器的串行实现:

ages = [5, 12, 17, 18, 24, 32]

def fun(x):
  if x < 18:
    return False
  else:
    return True

adults = list(filter(fun, ages))

adults
  
Out[29]: [18, 24, 32]

并行实现使用 map 并压缩:

from itertools import compress
import multiprocessing
with multiprocessing.Pool(processes=2) as pool:
    adult_ages = list(compress(ages, pool.map(fun, ages)))
adult_ages

Out[27]: [18, 24, 32]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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