运行ruby脚本的多个实例是否更有效?或单个脚本中的多个线程?
例如,用于检查给定域的所有链接的ruby脚本是否正常工作。
你会运行这个脚本的多个实例还是多个线程?
如何创建多个线程?
答案 0 :(得分:3)
“效率”可能意味着许多事情。对于Ruby< 1.9,green threads意味着你不会得到你从线程中想到的那么多的并发性,所以使用多个脚本实例将是从开始到结束最小化总实时的最佳方法。
至于创建它们,这里是“并行”下载页面的he Pickaxe book示例:
require 'net/http'
pages = %w( www.rubycentral.com
www.awl.com
www.pragmaticprogrammer.com
)
threads = []
for page in pages
threads << Thread.new(page) { |myPage|
h = Net::HTTP.new(myPage, 80)
puts "Fetching: #{myPage}"
resp, data = h.get('/', nil )
puts "Got #{myPage}: #{resp.message}"
}
end
threads.each { |aThread| aThread.join }