(scrAPI を使用して) 400 以上の Web ページの ruby をスクレイピングする必要があります。実際のコードは非常に連続しています。
data = urls.map {|url| scraper.scrape url }
実際、コードは少し異なります (例外処理など)。
どうすれば速くなりますか?ダウンロードを並列化するにはどうすればよいですか?
(scrAPI を使用して) 400 以上の Web ページの ruby をスクレイピングする必要があります。実際のコードは非常に連続しています。
data = urls.map {|url| scraper.scrape url }
実際、コードは少し異なります (例外処理など)。
どうすれば速くなりますか?ダウンロードを並列化するにはどうすればよいですか?
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/ --楽しんでください!
これは、つるはしのスレッドの説明で使用されている例とほぼ同じです。
http://www.rubycentral.com/pickaxe/tut_threads.html
つるはしコードを簡単に適応させて、スクレーパーを使用できるようにする必要があります。