簡體   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