【问题标题】:.NET parallel LINQ equivalent in Ruby [closed]Ruby中的.NET并行LINQ等价物[关闭]
【发布时间】:2012-10-15 15:42:26
【问题描述】:

我希望能够在 Ruby 中做这样的事情:

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

这也应该保留元素的顺序并使用延迟执行。 有什么选择吗?

【问题讨论】:

  • 目前我发现的唯一真正的解决方案是手动循环管理线程,它不提供延迟执行和相当低的级别。
  • 你会想把这个解决方案放在问题中,因为 SO 不适合用作为其他人编写代码的板。但是,如果您尝试过某事,则表明您付出了一些努力,人们更愿意提供帮助。

标签: c# ruby plinq


【解决方案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

【讨论】:

  • 据我了解,这不是以异步方式管理集合的常见解决方案吗?
  • 在 Ruby 中进行异步网络的方式有很多种,例如线程或光纤,或者在这种情况下,是特定于应用程序的实现。
猜你喜欢
  • 1970-01-01
  • 2010-11-16
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 2011-02-12
  • 2010-12-01
相关资源
最近更新 更多