2012-10-15 127 views
0

我希望能夠做這樣的事情在Ruby中:.NET並行LINQ相當於在Ruby中

(new[]{"http://google.com", "http://facebook.com", "http://microsoft.com", "http://twitter.com", "http://stackoverflow.com"}) 
.AsParallel() 
.Select(q => WebRequest.Create(q).GetResponse()) 

這也應該保留元素的順序,並使用延遲執行。 有沒有可用的選項?

+0

唯一真正的解決辦法,我發現到目前爲止是手工管理線程在一個循環,不提供延期執行和相當低的水平。 – Vasaka

+0

你會想把這個解決方案放在這個問題上,因爲SO不適合用作爲其他人編寫代碼的板子。但是,如果您嘗試過某些事情,則表明您付出了一些努力,而且人們更容易提供幫助。 –

回答

1

Ruby curb gem是一個包含curl庫的包裝,具有「多」模式,可以並行獲取多個URL。

從例如:

# Make multiple GET requests 
easy_options = { :follow_location => true } 
multi_options = { :pipeline => true } 

Curl::Multi.get('url1','url2','url3','url4','url5', easy_options, multi_options) do |easy| 
    # do something interesting with the easy response 
    puts easy.last_effective_url 
end 
+0

據我瞭解,這不是用於異步管理集合的常用解決方案嗎? – Vasaka

+0

在Ruby中執行異步網絡的方法有很多,例如線程或光纖,或者在這種情況下是應用程序特定的實現。 – tadman