F#内部是否默认并行运行代码?

N.T*_*T.C 3 .net parallel-processing f# task-parallel-library

关于F#中的并行处理,我有一个简单的问题.下面是我的代码来计算1 ^ 2 + 2 ^ 2 + ... + 100 ^ 2的总和(这是非常简单的问题,真的).据我所知,该程序创建了第二个列表(按第一个列表中的每个项目,并将它们放入第二个列表中),然后它获取第二个列表中所有项目的总和.程序内部是否并行处理原始列表中每个项目的平方?或者这个过程只是顺序的?如果是后者,我该如何让代码并行运行?

let mySum = 
[1..100]
|>Seq.map (fun n -> n*n)
|>Seq.sum
Run Code Online (Sandbox Code Playgroud)

Pet*_*etr 6

默认情况下,没有F#不会使代码并行运行.此外,该列表定义为具有对其成员的顺序访问的数据结构.您可以使用例如F#Array.Parallel模块并行运行代码:

let myParSum = 
    [|1..1000|]
    |> Array.Parallel.map (fun n -> n * n)
    |> Array.sum
Run Code Online (Sandbox Code Playgroud)

或使用标准.NET 任务并行库.