在 Linq 中使用 AsParallel 时自定义分块(Partitioners)
来源:互联网 发布:猎头搜 知乎 编辑:程序博客网 时间:2024/04/27 14:35
IEnumerable<T>
接口上有 AsParallel
方法,Partitioner
类上也提供了这个方法,使用这个类我们可以自定义分块的建立。
首先你可以在 System.Collections.Concurrent
命名空间中找到这个类,他提供了一个 Create
方法,第一个参数接受一个数组或者实现 IList<T>
的对象,第二个参数是个 Boolean
类型的参数。根据不同的传入参数,该方法返回一个特定分块类型的变量。(比如传入一个数组,返回 DynamicPartitionerForArray<Tsource>
或StaticPartitionerForArray<TSource>
,这些类型都继承自一个虚类OrderablePartitioner<TSource>
)
下面是实例的代码:
var result = (from x in Partitioner.Create(data, true).AsParallel()
where Math.Log(x) < 4 select x).Average();
你还可以通过调用 WithExecutionMode
/ WithDegreeOfParallelism
方法来定义其他的分块逻辑。
- WithExecutionMode
传入一个名为ParallelExecutionMode
参数(值为Default
或ForceParallelism
),Default
方式下能防止过度使用并行处理。
- WithDegreeOfParallelism
传入一个 integer 值来指定最大的并行任务数。
0 0
- 在 Linq 中使用 AsParallel 时自定义分块(Partitioners)
- Partitioners
- 在Mono中使用Linq
- 在LinQ中使用DateDiff
- 在LinQ中使用DateDiff
- 在SharePoint中使用LINQ
- 在linq中使用委托
- AsParallel()没有多线程执行,要用 AsParallel().ForAll(...)
- 在silverlight中使用Linq TO XML
- XAF之在linq中使用CriteriaOperator
- 在ASP.NET中使用LINQ
- 在linq中使用存储过程
- 在.NET2.0中使用LINQ
- 在Linq to Sql中管理并发更新时的冲突(3):使用记录的时间戳进行检测
- IQueryable在LINQ中
- 在ASP.NET中使用LINQ(第一部分)
- 在ASP.NET中使用LINQ(第一部分)
- 如何在实际项目开发中使用LinQ技术
- cmd命令行编译和运行java程序报错 NoClassDefFoundError
- Android 存储方式
- 数据结构--大小堆
- Library not loaded xxxx.framework Reason: image not found
- Qtextedit 中插入图片的方法
- 在 Linq 中使用 AsParallel 时自定义分块(Partitioners)
- 数据结构实验之栈三:后缀式求值
- poj3046 划分数dp
- Linux如何查看进程、杀死进程、启动进程等常用命令
- 通过Jedis客户端连接不到redis
- encodeURI来解决URL传递时为什么需要进行两次encodeURI编码
- tomcat下部署webservice axis
- tomcat-redis-session-manager的使用
- Linux查看进程所使用资源限制