我对F#中的并行处理有一个简单的问题。 下面是我的代码来计算1 ^ 2 + 2 ^ 2 + ... + 100 ^ 2的总和(这是非常简单的问题,真的)。据我所知,该程序创建了第二个列表(按第一个列表中的每个项目,并将它们放入第二个列表中),然后它获取第二个列表中所有项目的总和。程序内部是否并行处理原始列表中每个项目的平方?或者这个过程只是顺序的?如果是后者,我该如何让代码并行运行?
let mySum =
[1..100]
|>Seq.map (fun n -> n*n)
|>Seq.sum
答案 0 :(得分:6)
默认情况下,没有F#不会使代码并行运行。 此外,该列表定义为具有对其成员的顺序访问的数据结构。 您可以使用例如F#Array.Parallel模块并行运行代码:
let myParSum =
[|1..1000|]
|> Array.Parallel.map (fun n -> n * n)
|> Array.sum
或使用标准.NET Task Parallel Library。