2012-10-15 68 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