task中能否嵌套Parallel.foreach语句?

tylrr123 2016-03-23 01:42:57
业务场景是这样的:

一个采集程序需要采集歌手数据,包含6个字段(代表作、专辑、性别、出道日期、国籍、爱好)。这6个待采集的数据字段分布在6批不同的网址,每批网址有10w个(就是说一共需要采集60w网址)。

问题1:为了提高采集速度,我是否应该在程序中开启6个task去执行采集任务,然后在每个task中再使用Parallel.foreach 去采集对应的10w个网址?

问题2:为了提高采集速度,是否应该为这6个待采集字段建立6个数据表,以免多个线程同时写入一个表导致写入速度慢?


谢谢。
...全文
200 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
newtee 2016-03-24
  • 打赏
  • 举报
回复
写入的话可以用mongodb 一个表就行了 如果修改的话 多线程情况 可能要加锁 如果机器多的话 可以分几台机器处理
newtee 2016-03-24
  • 打赏
  • 举报
回复
没什么用吧 Parallel.foreach 是针对cpu核数的 可以这样
  int workThreadNumTemp = Math.Min(workThreadNum, ls.Count);
                            Enumerable.Range(0, workThreadNumTemp).AsParallel().ForAll(n =>
                            {
                                for (int i = n; i < ls.Count; i = i + workThreadNumTemp)
                                {
                                    int index = i;
                                     //
                                }
                            });
1. C#语言方面... 4 1.1 垃圾回收... 4 1.1.1 避免不必要的对象创建... 4 1.1.2 不要使用空析构函数 ★... 4 1.1.3 实现 IDisposable 接口... 4 1.2 String 操作... 5 1.2.1 使用 StringBuilder 做字符串连接... 5 1.2.2 避免不必要的调用 ToUpper 或 ToLower 方法... 5 1.2.3 最快的空串比较方法... 6 1.3 多线程... 6 1.3.1 线程同步... 6 1.3.2 使用 ThreadStatic 替代 NameDataSlot ★... 7 1.3.3 多线程编程技巧... 7 1.4 类型系统... 8 1.4.1 避免无意义的变量初始化动作... 8 1.4.2 ValueType 和 ReferenceType. 8 1.4.3 尽可能使用最合适的类型... 9 1.5 异常处理... 10 1.5.1 不要吃掉异常★... 10 1.5.2 不要吃掉异常信息★... 10 1.5.3 避免不必要的抛出异常... 10 1.5.4 避免不必要的重新抛出异常... 10 1.5.5 捕获指定的异常,不要使用通用的System.Exception. 10 1.5.6 要在finally里释放占用的资源... 11 1.6 反射... 11 1.6.1 反射分类... 12 1.6.2 动态创建对象... 12 1.6.3 动态方法调用... 12 1.6.4 推荐的使用原则... 12 1.7 基本代码技巧... 13 1.7.1 循环写法... 13 1.7.2 拼装字符串... 13 1.7.3 避免两次检索集合元素... 13 1.7.4 避免两次类型转换... 14 1.7.5为字符串容器声明常量,不要直接把字符封装在双引号" "里面。... 14 1.7.6 用StringBuilder代替使用字符串连接符 “+”. 14 1.7.7 避免在循环体里声明变量,... 15 1.8 Hashtable. 15 1.8.1 Hashtable机理... 15 1.8.2 使用HashTale代替其他字典集合类型的情形:... 16 1.9 避免使用ArrayList。... 16 1.10从XML对象读取数据... 17 1.11 避免使用递归调用和嵌套循环,... 17 1.12 使用适当的Caching策略来提高性能... 17 2. Ado.Net 17 2.1 应用Ado.net的一些思考原则... 18 2.2 Connection. 18 2.2.1 在方法打开和关闭连接... 18 2.2.2 显式关闭连接... 18 2.2.3 确保连接池启用... 19 2.2.4 不要缓存连接... 19 2.3 Command. 19 2.3.1 使用ExecuteScalar和ExecuteNonQuery. 19 2.3.2 使用Prepare. 19 2.3.3 使用绑定变量 ★... 19 2.4 DataReader 20 2.4.1 显式关闭DataReader 20 2.4.2 用索引号访问代替名称索引号访问属性... 20 2.4.3 使用类型化方法访问属性... 20 2.4.4 使用多数据集... 20 2.5 DataSet 21 2.5.1 利用索引加快查找行的效率... 21 2. 使用DataView.. 21 3.ASP.NET. 21 3.1 减少往返行程(Reduce Round Trips)... 21 3.2 避免阻塞和长时间的作业... 22 3.3 使用缓存... 22 3.4 多线程... 22 3.5 系统资源... 23 3.6 页面处理... 23 3.7 ViewState. 23 4.JScript 24 4.1 JScript性能优化的基本原则... 24 4.2 JScript语言本身的优化... 24 4.3 DOM相关... 27 4.4 其他... 28

111,111

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧