[英]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.