首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在ruby中快速下载大量网页?并行下载?

如何在ruby中快速下载大量网页?并行下载?
EN

Stack Overflow用户
提问于 2009-02-18 00:58:58
回答 2查看 1.2K关注 0票数 3

我需要抓取(使用scrAPI) 400+网页ruby,我的实际代码是非常连续的:

代码语言:javascript
代码运行次数:0
运行
复制
data = urls.map {|url| scraper.scrape url }

实际上,代码有点不同(异常处理和其他东西)。

我怎么才能让它更快呢?如何并行化下载?

EN

回答 2

Stack Overflow用户

发布于 2009-02-18 01:02:58

代码语言:javascript
代码运行次数:0
运行
复制
th = []
data = []
dlock = Mutex.new

urls.each do |url|
  th << Thread.new(url) do |url|
    d = scraper.scrape url
    dlock.synchronize { data << d }
  end
end

th.each { |t| t.join }

塔达!(注意;从内存中写入,未测试,可能会吃掉你的小猫,等等)

编辑:我想一定是有人写了一个通用的版本,所以他们就写了:http://peach.rubyforge.org/ --享受!

票数 5
EN

Stack Overflow用户

发布于 2009-02-18 01:04:31

这是一个很好的例子,用来解释线程:

http://www.rubycentral.com/pickaxe/tut_threads.html

您应该能够很容易地调整挑叉代码,以使用您的刮刀。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/559420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档