2

我正在研究网络爬虫。可以在每个请求不创建线程的情况下执行许多请求(例如,每秒 500-1000 个)(我不是指线程池、重用等)?

4

1 回答 1

1

我认为您在这里想要的是单个线程可以同时处理 n 个请求。

现在这意味着交错处理 2 个线程的步骤。这只有在有一些“阻塞”操作时才有意义。

现在,有人可能会说,是的,我们确实阻止了。所以我想要的是

  1. 请求 1 已发出,我正在等待回复
  2. 在等待请求 1 的响应是响应时发起请求 2。
  3. 获取请求 1 的响应并处理它
  4. 获取请求 2 的响应并进行处理。

这只有在 HTTP 是“异步的”时才有可能。不幸的是,事实并非如此。(一个好的阅读 - > http://wiki.answers.com/Q/Why_http_is_asynchronous)有一些“异步”HTTP客户端可以做浏览器中的AJAX。

它允许发起调用的线程继续。响应在回调中返回。

事实是他们有一个线程池来同步处理这些调用。只有它看起来是异步的。

示例:

http://hc.apache.org/httpcomponents-asyncclient-dev/index.html

于 2012-12-27T16:14:12.063 回答