У меня есть массив URL-адресов, и я не буду открывать их и извлекать определенный тег.
Но я хочу сделать это параллельно.Параллельные HTTP-запросы в ruby
Вот псевдокод для того, что я хочу сделать:
urls = [...] tags = [] urls.each do |url| fetch_tag_asynchronously(url) do |tag| tags << tag end end wait_for_all_requests_to_finish()
Если это может быть сделано в славном и безопасным способом, который был бы удивительным.
Я мог бы использовать нить, но это не похоже, что массивы являются потокобезопасными в рубине.
Ха-ха, это было то же самое решение, которое я написал! :) –
Если основная часть работы IO, количество ядер не должно иметь большого значения, не так ли? – ben
@ben: Это правда. Тем не менее, слишком много потоков и открытых соединений одновременно могут быть контрпродуктивными. По-моему, Firefox использует по умолчанию 8 соединений для конвейерной обработки HTTP, поэтому теперь я использую это как предлагаемое значение (вместо 5). –