[英]Multiprocessing List Comprehension/Filter
I'm trying to multiprocesses a list-comprehension:我正在尝试对列表理解进行多处理:
l = [i for i in range(10) if fun(i)]
If I was keeping all the values in the list, I could simply call pool.map
, but this loop might not keep all values.如果我保留列表中的所有值,我可以简单地调用pool.map
,但此循环可能不会保留所有值。
How can I go about implementing this?我怎样才能 go 实现这个?
Use itertools.compress to filter the results of pool.map.使用 itertools.compress 过滤 pool.map 的结果。
Here is the serial implementation using filter:这是使用过滤器的串行实现:
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]
The parallel implementation uses map and compress:并行实现使用 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.