在 Linq 中使用 AsParallel 时自定义分块(Partitioners)

AsParallel()没有多线程执行,要用 AsParallel().ForAll(...) using System; using System.Linq; using System.Threading;namespace YYX.CATest { static class Program { private static int Main() { var digitals = Enumerable.Range(0, 阅读详情

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 值来指定最大的并行任务数。

Dynamics 365 F&O 开发入门(一)-- 从零开始建表 从零开始一步一步教你在Dynamics 365 F&O中创建一个表 阅读详情

相关推荐

STM32F411CEU6实战:用W25Q64存储多张图片,在240x240 LCD上轮播显示(附源码)

本文详细介绍了如何使用STM32F411CEU6通过SPI接口管理W25Q64 Flash中的多张图片,并在240x240 LCD上实现平滑轮播显示。内容涵盖硬件配置、图片存储方案设计、轮播系统实现及性能优化技巧,特别针对SPI传输优化和多图存储管理提供了实用解决方案。附源码,适合嵌入式开发者参考。

weixin_32025789的博客 308

C# 中Linq并行查询AsParallel 方法与Stopwatch类的理解与使用

是 C# 中的一个方法,它属于 System.Linq 命名空间下的 ParallelEnumerable 类。当你对一个数据集合执行 LINQ 查询时,通常这些查询是按顺序执行的。但是,并不是所有的查询都适合并行处理,有时候并行化可能会因为线程管理和同步的开销而导致性能下降。方法后,LINQ 查询会尝试并行执行,这意味着它会在多个线程上分配工作,以便同时处理集合中的多个元素。命名空间下的一个类,它提供了一组方法和属性,可以用来准确地测量运行时间。时需要考虑查询的性质和数据集的大小。

刚刚说 1442

OMNET++ INET框架学习教程(一)

在自组网学习的道路上摸石头过河,帮你快速入门OIMNET++平台下的INET框架。

NLDwangzhe的博客 6556

c# 高级编程-多线程安全

多线程安全介绍

qq_45165610的博客 2680

OpenBCI脑电实验避坑指南:如何用Python准确捕捉P300信号

本文详细介绍了使用OpenBCI和Python进行P300脑电信号实验的避坑指南,包括电极贴放、信号采集、信号处理和数据分析等关键步骤。通过实战经验和代码示例,帮助研究者避开常见陷阱,提高P300信号捕捉的准确率,适用于脑机接口和神经科学研究。

weixin_30316097的博客 550

一文梳理金融风控建模全流程(Python)

。借助A卡模型,银行或金融机构能够根据申请人的个人信息和历史数据,对其进行风险评估。这种评估能够帮助金融机构判断借款人是否具备偿还贷款的能力和意愿。

weixin_43420291的博客 4776

什么是并行 LINQ(PLINQ),如何在 C# 中使用它?

并行LINQ(PLINQ)是LINQtoObjects的并行实现,旨在利用多核处理器的并行处理能力来提高查询性能。PLINQ通过在查询中添加方法,将标准的LINQ查询转换为并行查询,从而在多个线程上并行执行查询操作。

weixin_45422672的博客 383

ISO18000-6B/6C(EPC C1G2)两个射频识别(RFID)标准协议的技术特点

目前读写器基本上是采用IMPINJ的R2000芯片和E710芯片开发,因为ISO18000-6B标准的现在应用很少,E710芯片已经不再支持ISO18000-6B标准,选择上就只有采用R2000芯片开发的UR6258超高频读写器以及手持机,这个在项目应用上需要留意。尽管ISO18000-6B标准具有上述优点,但也存在一些不足之处,特别是多标签阅读性能远远满足不了现在的应用需求,近年来发展停滞,绝大部分应用已经被ISO18000-6C(EPC C1G2)取代;#RFID# #物联网# #标准协议#

RFID设备与应用介绍 2155

C#之:并行编程 -3

并行 PLINQ: LINQ的基本功能就是对集合进行遍历查询,并在此基础上对元素进行操作。微软专门为 LINQ 拓展一个类 ParallelEnumerable (该类的命名空间也在 System.Linq 中),它所提供的扩展方法会让LINQ 支持并行计算,这就是所谓的 PLINQ。 ParallelEnumerable 类 ParallelEnumerable 类运算符 说明 AsParallel PLINQ 的入口点。 指定如果可能,应并行化查询的其余部分。 AsSequential 指定查询的其余部

C++++ ++ 798

Android车载音频系统概览

官网有些部分的内容描述比较简单,对没有app、系统和底层开发经验,容易一眼扫过,没有留意到相关细节。 本节补充车载音频相关细节。

hwj的博客 785

扫地机器人设计与实现——基于嵌入式系统的智能家居解决方案

本文介绍了基于嵌入式技术的扫地机器人设计与实现。通过利用STM32单片机、传感器、驱动系统等硬件组件,并结合路径规划与控制算法、远程控制等软件技术,设计出了一款具有智能避障、路径规划、自动充电等功能的扫地机器人。系统的开发不仅提高了清洁效率,也为进一步研究和优化扫地机器人提供了实践基础。

2201_76125393的博客 1638

C# 并行和多线程编程——并行集合和PLinq

一、并行集合 —— 线程安全集合 二、Parallel Linq的用法及性能 1、AsParallel 2、GroupBy方法   在上一篇博客,我们学习了Parallel的用法。并行编程,本质上是多线程的编程,那么当多个线程同时处理一个任务的时候,必然会出现资源访问问题,及所谓的线程安全。就像现实中,我们开发项目,就是一个并行的例子,把不同的模块分给不同的人,同时进行,才能在短的时间内做出大的项目。如果大家都只管自己写自己的代码,写完后发现合并不到一起,那么这种并行就没有了意义。   并行算法

biyusr的专栏 1443

具身智能:原理、算法与系统 第3章 具身智能的感知-认知-行为框架

具身智能的PCB框架源于对生物智能系统的观察:动物通过感官接收环境信息(感知),基于内部模型进行预测和决策(认知),并通过身体执行动作改变环境(行为),而这一改变又通过感知反馈形成闭环。这一框架在两篇核心文献中得到了深入阐述:提出了系统的数学形式化和工程实现,则从认知科学角度强调了归纳偏置和双过程理论的重要性。

VectorShift的博客 154

【转】1.5异步编程:.NET4.X 数据并行

任务并行库(TPL)是.NET Framework 4的System.Threading和System.Threading.Tasks命名空间中的一组公共类型和API。TPL的目的在于简化向应用程序中添加并行性和并发性的过程,从而提高开发人员的工作效率。TPL会动态地按比例调节并发程度,以便最有效地使用所有可用的处理器。此外,TPL还处理工作分区、ThreadPool上的线程调度、取消支持、状态管理以及其他低级别的细节操作。通过使用TPL,您可以在将精力集中于程序要完成的工作,同时最大程度...

sinolover的专栏 625

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# 多线程八之并行Linq(ParallelEnumerable)

C# 多线程八之并行Linq(ParallelEnumerable) 1、简介 关于并行Linq,Ms官方叫做并行语言集成(PLINQ)查询,其实本质就是Linq的多线程版本,常规的Linq是单线程的,也就是同步的过程处理完所有的查询.如果你的Linq查询足够简单,而且耗时短,那么建议你使用Linq,但是如果你的查询比较耗时,而且很复杂,且不涉及多线程争用问题,那么可以使用PLinq技术,让多个线程参与到查询中来,有效的利用CPU资源.这样你的代码能从中获得最大的收益.判断什么时候使用PLINQ,什么时

carcarrot的博客 1185

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

linq partition by

static void Main(string[] args) { var beatles = (new[] { new { id=1 , inst = "guitar" , name="john" }, new { id=2 , inst = "guitar" , name="george" }, new { id=3 , inst = "guitar"

正怒月神的博客 2367

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LINQ 101——分区、Join、聚合

一、Partitioning 分区 Take 例1:取前3个数 1 static void Linq1() 2 { 3 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; 4 var first3Numbers = numbers.Take(3); 5 Console.WriteLine("前3...

weixin_30722589的博客 130

Linq平行作業的例子

我們知道 可以使用linq的 AsParallel()啟用平行作業(Plinq),系統會自動啟用一定數量的線程去執行相應操作。它適用于有延時作業的操作。但記住:對于沒有延時操作的作業,還是老老實實用AsEnumrable()吧,因為線程 的分配,啟動,回收等反而增加了執行時間和資源。 例子1:平行作業。要注意 每次執行平行作業可能不會按順序 private void button7_Click(object sender, EventArgs e) { Stopwa

segclliwf的博客 277

C# 将集合拆分为多个相等块

您是否有时会遇到需要将集合拆分为多个相等块的情况? 以前,您必须创建自定义方法来实现此目的。在图片的第一个示例中可以看到一个简单的实现。 但是,从 .NET 6 开始,有一个新的 LINQ 扩展方法可以做到这一点! 您如何看待 .NET 6 中添加的新 LINQ 方法? ...

Peter的博客 595

【c#基础】并行Linq

并行:指在同一时刻,有多条指令在多个处理器上同时执行 并发:指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行 并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。 串行:A和B两个任务运行在一个CPU线程上,在A任务执行完之前...

weixin_30379973的博客 245

并行LINQ

并行查询 System.Linq名称空间中包含的类ParallelEnuerable可以分解查询的工作,使其分布在多个线程上。尽管Enumerable类给IEnumerable<T>接口定义了扩展方法,但ParallelEnumerable类的大多数扩展方法是ParallelQuery<TSource>类的扩展。一个重要的例外是AsParallel()方法,它扩展了IE...

singhwong 319

【C#】59. AsParallel() 与 ForAll

平时经常会用到LINQ,这里介绍的方法可以有效地使用并行查询来加快查询速度(AsParallel),同时通过使用ForAll来对结果进行并行处理。 GetTpyes:通过反射,从当前Assembllies中的所有组件中找出名称以“Web”开头的类型名称。 static IEnumerable GetTypes() { return from assembly in AppDomain.

huiwuhuiwu的专栏 1万+

使用AsParallel 进行并行化处理数据

using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplic...

weixin_30532973的博客 2859

构建多线程应用程序2 Parallel 并行类:Parallel.ForEach()、Task异步操作类:Task.Factory.StartNew()、并行LINQ查询: AsParallel()

public partial class Form3 : Form { /// &lt;summary&gt; /// 主线程 /// &lt;/summary&gt; private Task taskMain; /// &lt;summary&gt; /// 主线程退出对象 ...

Java_c# 3866
上一篇: Javascript 基础点
下一篇: .NET 调用方信息的获取
sqlchen
博客等级 码龄24年 10粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值