gpt4 book ai didi

c# - 下载数千个网页的最有效方法

转载 作者:行者123 更新时间:2023-11-30 16:31:05 25 4
gpt4 key购买 nike

我有几千件元素。对于每个项目,我需要下载一个网页并处理该网页。处理本身不是处理器密集型的。

现在,我正在使用 webclient 类同步执行此操作,但耗时太长。我确信它可以很容易地并行化/异步化。但我正在寻找最节省资源的方法来做到这一点。事件网络请求的数量可能有一些限制,所以我不喜欢创建数千个网络客户端并在每个客户端上启动异步操作的想法。除非这不是实际问题。

是否可以在 C# 4 中使用并行扩展和任务类?

编辑:感谢您的回答。我希望使用异步操作,因为并行运行同步操作只会阻塞那些线程。

最佳答案

您想使用一种称为生产者/消费者队列的结构。您将所有 url 排队等待处理,并分配消费者线程以将每个 url 出队(使用适当的锁定),然后下载并处理它。

这使您可以根据自己的情况控制和调整消费者的数量。在大多数情况下,您会发现网络操作的最佳吞吐量是通过 5 到 20 个事件连接实现的。越来越多,您开始担心线路上的拥塞问题或线程之间的上下文切换问题。当然,它会根据您的情况而有所不同:具有很多内核和胖管道的服务器可能能够将这个数字推得更高,但是拨号上的旧 P4 可能会发现它在一次只运行几个时效果最好。这就是调优能力如此重要的原因。

关于c# - 下载数千个网页的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5082681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com