AsParallel \AsQueryable().ToList() [System.ArgumentOutOfRangeException was unhandled" 索引超出范围。必须为... 在.ToList() 前加 Where(x => true) or Select(x => x). for TypeScript的实现 针对TypeScript 3.9.X和ES 2018 await from ( [ bing , google , quackQuackGo ] ) . asP arallel ( ) . selectAsync ( downloadHtml ) . select ( getTitle ) . toArray ( ) npm i linq-to-typescript tsconfig.json " compilerOptions " : { " target " : " es2018 " , " lib " : [ " dom " , " es2018 " " importHelpers " : true
.Net 3.5支持Plinq的相关信息已被微软撤掉了, 而引用此dll可以使3.5的Linq支持 AsP arallel ()方法, 3.5可以使用1.0.3058.34407版本。通过小例子测试发现查询效率有极大的提高 using System.Threading.Tasks; using System.Threading; using System.Linq;
1:比如一个循环 for (int i = 1; i < Model.detailsModels.Count; i++){} Model.detailsModels.Count小于0,这样就会出现 索引 超出范围 ,可以在循环上加一个判断if(Model.detailsModels.Count > 0){} 2:在获取数据时,数据库可能没有一... 1、AsEnumer able ()是延迟执行的,实际上什么都没有发生,当真正使用对象的时候(例如调用:First, Single, To List ....的时候)才执行。 2、AsEnumer able 将一个序列向上转换为一个IEnumer able , 强制将Enumer able 类下面的查询操作符绑定到后续的子查询当中。 3、As Query able 将一个序列向下转换为一个I Query a
AsP arallel \As Query able <T>().To List () [System. Argument OutO f Range Exception was un handle d" 索引 超出范围 必须 为非负值并小于集合大小]解决方法 在.To List () 前加Where(x => true) or Select(x => x).
LinqToCompute .NET LINQ的实验性Vulkan计算提供程序。 该项目的目的是评估此类提供商的能力和潜在的陷阱。 仅实现了非常有限的功能集。 整个公共API包含一个对IEnumer able {T}扩展方法AsCompute 。 int [] input = Enumer able . Range ( 0 , 200_000_000 ). ToArray (); input . Select ( x => x + 1 ). ToArray (); // 3.098s Regular LINQ (single CPU core) input . AsP arallel (). Select ( x => x + 1 ). ToArray (); // 1.290s PLINQ (multiple CPU cores) input . AsCompute
您想淋漓尽致地发挥多核计算机系统的处理能力吗?《C#并行编程高级教程:精通NET 4 P arallel Extensions》将帮助您实现这一夙愿。这本精品书籍浓墨重彩地描述如何使用C# 4、Visual Studio 2010和.NET Framework 4高效地创建基于任务的并行应用程序,详细讲述最新的单指令、多数据流指令和向量化等并行编程技术,介绍现代并行库,讨论如何珠联璧合地使用高级Intel工具与C#,并指导您巧妙使用新引入的轻型协调结构来开发自己的解决方案并解决最棘手的并发编程问题。 ◆介绍如何基于新Task P arallel Library和.NET 4设计稳定的可扩展并行应用程序。 ◆讲解命令式数据并行、命令式任务并行、并发集合以及协调数据结构。 ◆描述PLINQ高级声明式数据并行。 ◆讨论如何使用新的Visual Studio 2010并行调试功能来调试匿名方法、任务和线程。 ◆演示如何对数据源进行分区,以便在不同任务和线程之间合理分配工作负荷。 Caston C.Hillar是一位独立软件咨询师,自1997年起便一直从事并行编程、多处理器和多核领域的研究,Gaston拥有使用C#和.NET Framework来设计和开发各种复杂并行解决方案的丰富经验,曾于2009年荣膺Intel Black Belt Software Developer奖。 第1章 基于任务的程序设计 1.1 使用共享内存的多核系统 1.1.1 共享内存多核系统与分布式内存系统之间的区别 1.1.2 并行程序设计和多核程序设计 1.2 理解硬件线程和软件线程 1.3 理解Amdahl法则 1.4 考虑Gustafson法则 1.5 使用轻量级并发模型 1.6 创建成功的基于任务的设计 1.6.1 以并发的思想指导设计 1.6.2 理解交错并发、并发和并行之间的区别 1.6.3 并行化任务 1.6.4 尽量减少临界区 1.6.5 理解多核并行程序的设计原则 1.7 为NUMA架构和更高的可扩展性做好准备 1.8 判断是否适合并行化 1.9 小结 第2章 命令式数据并行 2.1 加载并行任务 2.1.1 System.Threading.Tasks.P arallel 类 2.1.2 P arallel .Invoke 2.2 将串行代码转换为并行代码 2.2.1 检测可并行化的热点 2.2.2 测量并行执行的加速效果 2.2.3 理解并发执行 2.3 循环并行化 2.3.1 P arallel .For 2.3.2 P arallel .ForEach 2.3.3 从并行循环中退出 2.4 指定并行度 2.4.1 P arallel Options 2.4.2 计算硬件线程 2.4.3 逻辑内核并不是物理内核 2.5 通过甘特图检测临界区 2.6 小结 第3章 命令式任务并行 3.1 创建和管理任务 3.1.1 System.Threading.Tasks.Task 3.1.2 理解Task状态和生命周期 3.1.3 通过使用任务来对代码进行并行化 3.1.4 等待任务完成 3.1.5 忘记复杂的线程 3.1.6 通过取消标记取消任务 3.1.7 从任务返回值 3.1.8 TaskCreationOptions 3.1.9 通过延续串联多个任务 3.1.10 编写适应并发和并行的代码 3.2 小结 第4章 并发集合 4.1 理解并发集合提供的功能 4.1.1 System.Collections.Concurrent 4.1.2 ConcurrentQueue 4.1.3 理解并行的生产者-消费者模式 4.1.4 ConcurrentStack 4.1.5 将使用数组和不安全集合的代码转换为使用并发集合的代码 4.1.6 ConcurrentBag 4.1.7 IProducerConsumerCollection 4.1.8 BlockingCollection 4.1.9 ConcurrentDictionary 4.2 小结 第5章 协调数据结构 5.1 通过汽车和车道理解并发难题 5.1.1 非预期的副作用 5.1.2 竞争条件 5.1.3 死锁 5.1.4 使用原子操作的无锁算法 5.1.5 使用本地存储的无锁算法 5.2 理解新的同步机制 5.3 使用同步原语 5.3.1 通过屏障同步并发任务 5.3.2 屏障和ContinueWhenAll 5.3.3 在所有的参与者任务中捕捉异常 5.3.4 使用超时 5.3.5 使用动态数目的参与者 5.4 使用互斥锁 5.4.1 使用Monitor 5.4.2 使用锁超时 5.4.3 将代码重构为避免使用锁 5.5 将自旋锁用作互斥锁原语 5.5.1 使用超时 5.5.2 使用基于自旋的等待 5.5.3 自旋和处理器出让 5.5.4 使用volatile修饰符 5.6 使用轻量级的手动重置事件 5.6.1 使用ManualResetEventSlim进行自旋和等待 5.6.2 使用超时和取消 5.6.3 使用ManualResetEvent 5.7 限制资源的并发访问 5.7.1 使用SemaphoreSlim 5.7.2 使用超时和取消 5.7.3 使用 Semaphore 5.8 通过CountdownEvent简化动态fork和join场景 5.9 使用原子操作 5.10 小结 第6章 PLINQ:声明式数据并行 6.1 从LINQ转换到PLINQ 6.1.1 P arallel Enumer able 及其 AsP arallel 方法 6.1.2 AsOrdered和orderby子句 6.2 指定执行模式 6.3 理解PLINQ中的数据分区 6.4 通过PLINQ执行归约操作 6.5 创建自定义的PLINQ聚合函数 6.6 并发PLINQ任务 6.7 取消PLINQ 6.8 指定所需的并行度 6.8.1 WithDegreeOfP arallel ism 6.8.2 测量可扩展性 6.9 使用ForAll 6.9.1 foreach和ForAll的区别 6.9.2 测量可扩展性 6.10 通过WithMergeOptions配置返回结果的方式 6.11 处理PLINQ抛出的异常 6.12 使用PLINQ执行MapReduce算法 6.13 使用PLINQ设计串行多步操作 6.14 小结 第7章 Visual Studio 2010的任务调试能力 7.1 充分利用多显示器的支持 7.2 理解并行任务调试器窗口 7.3 查看P arallel Stacks图 第8章 线程池 第9章 异步编程模型 第10章 并行测试和调优 第11章 向量化、SIMD指令以及其他并行库 附录A .NET 4中与并行相关的类图 附录B 并发UML模型 附录C P arallel Extensions Extras
数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1510 标注数量(xml文件个数):1510 标注类别数:2 标注类别名称:["keng","jingai"] 每个类别标注的框数: keng count = 3166 jingai count = 442 使用标注工具:labelImg 标注规则:对类别进行画矩形框 重要说明:图片截图视频,主要是道路上坑洞,还有一个井盖,因为井盖容易被误识别成坑洞,故加了这个类别 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注
```C# public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumer able <TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func); 其中,参数解释如下: - `source`:指定要聚合的数据源,类型为`IEnumer able <TSource>`。 - `seed`:指定聚合操作的初始值。 - `func`:指定聚合操作的函数,该函数接收两个参数:先前的累积值和当前的元素。 例如,假设有一个`int`类型的数组`data`,我们可以使用`Aggregate()`函数对其进行求和操作,代码如下: ```C# using System; using System.Linq; using HPCsharp.P arallel Algorithms; class Program static void Main(string[] args) int[] data = new int[] { 1, 2, 3, 4, 5 }; int sum = data. AsP arallel ().Aggregate(0, (partialSum, x) => partialSum + x); Console.WriteLine("Sum = " + sum); 在上面的代码中,我们使用了` AsP arallel ()`函数将数据转换为并行查询,然后使用`Aggregate()`函数计算求和。`Aggregate()`函数接受一个初始值和一个聚合函数,该函数将每个元素添加到部分和中。最后,我们输出计算得到的和。 需要注意的是,在使用`Aggregate()`函数时,聚合函数 必须 满足结合律和交换律,否则可能导致计算结果不准确。