【发布时间】:2013-09-12 20:23:49
【问题描述】:
假设我正在使用来自 Python 的 Urllib2 库从服务器检索 URL 列表。我注意到获取一页大约需要 5 秒钟,而完成我想要收集的所有页面需要很长时间。
我正在考虑这 5 秒。大部分时间都花在了服务器端,我想知道我是否可以开始使用线程库。在这种情况下说 5 个线程,那么平均时间可能会大大增加。每页可能有 1 或 2 秒。 (可能会使服务器有点忙)。我怎样才能优化线程的数量,这样我才能获得合法的速度,而不会太用力地推动服务器。
谢谢!
更新: 我将线程数一一增加,并监控抓取 100 个 URL 所花费的总时间(单位:分钟)。事实证明,当你将线程数更改为 2 时,总时间显着减少,并且随着线程数的增加而不断减少,但线程带来的“改进”变得越来越不明显。 (当你构建太多线程时,总时间甚至会显示反弹) 我知道这只是我收获的 Web 服务器的一个特定案例,但我决定分享只是为了展示线程的力量,并希望有一天对某人有所帮助。
【问题讨论】:
标签: python multithreading screen-scraping urllib