在标准 F# 库中并行运行以下代码的最轻量级、最简洁的方法是什么?或者没有任何广泛使用的附加库?
let newlist = oldlist |> List.map myComplexFunction
我能找到的最好的是
let newlist = oldlist |> List.map (fun x -> async { return myComplexFunction x }
|> Async.Parallel
|> Async.RunSynchronously
|> Array.toList
我不喜欢这样,因为它有 4 行长,并且构造了一个数组,然后我必须将其重新生成一个列表。如果我使用数组,它会很简单,Array.parallel,但我想保持那个可爱的不可变列表功能的纯粹性。我简直不敢相信没有替代 list ,但到目前为止一直找不到。 有什么好的建议吗?
最佳答案
使用 PSeq
模块:
open Microsoft.FSharp.Collections
let newlist =
oldlist
|> PSeq.map myComplexFunction
|> PSeq.toList
关于parallel-processing - F#如何并行做List.map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30246799/