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个数据表,以免多个线程同时写入一个表导致写入速度慢?


谢谢。
...全文
190 2 打赏 收藏 转发到动态 举报
写回复
用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;
                                     //
                                }
                            });

110,534

社区成员

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

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

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