问题描述
业务场景是这样的:一个采集程序需要采集歌手数据,包含6个字段(代表作、专辑、性别、出道日期、国籍、爱好)。这6个待采集的数据字段分布在6批不同的网址,每批网址有10w个(就是说一共需要采集60w网址)。问题1:为了提高采集速度,我是否应该在程序中开启6个task去执行采集任务,然后在每个task中再使用Parallel.foreach去采集对应的10w个网址?问题2:为了提高采集速度,是否应该为这6个待采集字段建立6个数据表,以免多个线程同时写入一个表导致写入速度慢?谢谢。
解决方案
解决方案二:
没什么用吧Parallel.foreach是针对cpu核数的可以这样intworkThreadNumTemp=Math.Min(workThreadNum,ls.Count);Enumerable.Range(0,workThreadNumTemp).AsParallel().ForAll(n=>{for(inti=n;i<ls.Count;i=i+workThreadNumTemp){intindex=i;//}});
解决方案三:
写入的话可以用mongodb一个表就行了如果修改的话多线程情况可能要加锁如果机器多的话可以分几台机器处理
时间: 2024-09-14 18:49:17