当前位置:
首页 > Python基础教程 >
-
C#教程之.NET并行与多线程学习系列一
一、并行初试:
1 public static void test() 3 { 5 for (int i = 0; i < 10000; i++) 7 { 9 Console.WriteLine(i); 11 } 13 } 14 15 public static void test1() 17 { 19 for (int i = 0; i < 10000; i++) 21 { 23 Console.WriteLine(i + "aaaaaaaaaaaaaaa"); 25 } 27 }
调用:
1 static void Main(string[] args) 3 { 5 Stopwatch sw = new Stopwatch(); 7 sw.Start(); 9 //串行执行: 11 test(); 13 test1(); 15 //并行执行: 17Parallel.Invoke(test, test1); 19sw.Stop(); 21Console.WriteLine("共耗费时间:"); 23Console.WriteLine(sw.ElapsedMilliseconds / 1000+"s"); 25 }
二、分区并行:
1 Parallel.ForEach(Partitioner.Create(1,20,5),(x,s)=>{ 3 //并行代码中自定义串行,第三个参数表示item1到item2之间的范围
6 Console.WriteLine(x); 8 for (int i = x.Item1; i < x.Item2; i++) 10 { 12 if (i == 10) break; 13 14 Console.WriteLine(i); 16 } 18 s.Break();// 非常类似普通for循环中的break 20 if (s.ShouldExitCurrentIteration) 22 return; 24 });
三、异常捕获:AggregateException
1 int[] arry = new int[10001]; 2 3 for (int i = 0; i < 10000; i++) 5 { 7 arry[i] = i; 9 } 11 try 13 { 14 15 Parallel.ForEach(arry, (x, s) => 17 { 19 Console.WriteLine(x); 21 if (sw.Elapsed.Seconds > 3) 23 { 25 throw new TimeoutException("操作超时"); 27 } 29 }); 31 } 33 catch (AggregateException ex) 35 { 39 foreach (var item in ex.InnerExceptions) 41 { 43 Console.WriteLine(item); 45 } 47 }
四、指定并行调度:
1 ParallelOptions options = new ParallelOptions(); 3 options.MaxDegreeOfParallelism = 1;//如果设置为1就类似于串行代码按顺序执行 5 options.MaxDegreeOfParallelism =Environment.ProcessorCount;//获取计算机上面的处理器数量 7 Parallel.For(1,10,options,(x) => 9 { 11 Console.WriteLine(x); 13 });
五、未完待续...
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式