我有一个集合,里面数据在10万条左右

低调点没事 2020-12-16 11:35:24
我现在需要对这些数据做一次数据验证。
所以我需要请求一个接口,接口是第三方提供的,接口响应时间在2s左右。
那么我要处理这批数据,我怎么样能尽快完成呢?
能想到就是用Task,进行多任务操作,但有点想不通该控制用多少个Task.
...全文
387 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2020-12-16
  • 打赏
  • 举报
回复
数据验证看对方的,不看你的。 看对方接口允许你是一条一条,还是一批一批。 看对方允许你的访问频次和数据大小。 假设你1条1条提交,假设你的网络够快,你一次并行提交1w,对方扛得住,有啥问题?? 对于你来说,我们考虑得根本就不是啥task,我们考虑的是池。不管你的机器,还是他的机器。只要任何一方都扛不住,那就修改池大小
glb21 2020-12-16
  • 打赏
  • 举报
回复
让对方开放数据库接口,你使用多线程并发,能快不少。
wanghui0380 2020-12-16
  • 打赏
  • 举报
回复
你这个主要是IO密集。 3个因素 1.内存io:你自己的内存是否扛得住,扛不住需要池化 2.网络io:网络上行速率,你最大上行就那么大,你在并行也还只有那么大,并且并行过多会网络拥堵会产生超时,所以还是池化httpclient,当然net现在自己有个httclientfactory是自己池化的 3.对方处理能力,他处理不了你过多的请求,你并行发在多也木用。反而容易造成对方宕机或者惩罚性限流 4.异常处置,网络IO总会有异常的,所以你的重试策略(比如指数退避重试),熔断策略,注意在有大规模异常重试的情况下不要在继续往上堆请求,那样做只会加大撕扯“伤口” 总体上我们需要的是个池
低调点没事 2020-12-16
  • 打赏
  • 举报
回复
引用 2 楼 正怒月神 的回复:
你拿到数据,需要2s,然后目前自己处理数据需要多少s?
目前只是取出数据了,代码现在只有主线程,计算下时间也要两天。 太慢了太慢了,而且每天都要跑一遍 就想着优化的,能想到的就是Task.。。上面回复告诉我要好像不是那么回事。。。 目前用了Parallel.Foeach。。。集合拆成了每次200条。。。不知道时间快不快。我先去测试下看看。
低调点没事 2020-12-16
  • 打赏
  • 举报
回复
谢谢。看样子想差了。。
正怒月神 2020-12-16
  • 打赏
  • 举报
回复
你拿到数据,需要2s,然后目前自己处理数据需要多少s?

111,093

社区成员

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

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

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