f# - 在范围上使用 PLINQ AsParallel()

标签 f# task-parallel-library plinq

我想使用 PLINQ 方法 AsParallel() 重写这个 Parallel.For 循环。据我所知, AsParallel() 需要将整个序列传递给它,例如创建数组 A,然后调用 A.AsParallel().ForAll 或 A.AsParallel().Select 。有没有办法让 AsParallel() 在一个范围内工作 - 在这种情况下,从低到高?

for k = 2 to m+n do
    let low = max 1 (k-m)
    let high = min (k-1) n
    Parallel.For(low, high + 1, (fun j ->

最佳答案

一种方法是使用 ParallelEnumerable.Range() :

ParallelEnumerable.Range(low, high-low+1).Select(fun i -> let a = A.[i] in …)

关于f# - 在范围上使用 PLINQ AsParallel(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225816/

相关文章:

F# 过多调用嵌套计算表达式

c# - 这两个代码片段是否使用 IQueryable 和 .AsParallel 等效?

c# - 在嵌套循环中,Parallel.For 应该用在外循环还是内循环?

c# - LINQ 之后的下一件大事是什么?

linq - C# : Chained Linq methods and casting

F# 在不使用循环的情况下逐个字母地写入一串文本

f# - 在 FSharp 中键入同义词

logging - 关闭日志记录 F# 的优雅方式

c# - 区分超时和用户取消

.net - PLINQ 更新失败