3

(scrAPI を使用して) 400 以上の Web ページの ruby​​ をスクレイピングする必要があります。実際のコードは非常に連続しています。

data = urls.map {|url| scraper.scrape url }

実際、コードは少し異なります (例外処理など)。

どうすれば速くなりますか?ダウンロードを並列化するにはどうすればよいですか?

4

2 に答える 2

5
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/ --楽しんでください!

于 2009-02-18T01:02:58.140 に答える
0

これは、つるはしのスレッドの説明で使用されている例とほぼ同じです。

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

つるはしコードを簡単に適応させて、スクレーパーを使用できるようにする必要があります。

于 2009-02-18T01:04:30.913 に答える