私はRubyが初めてで、複数のスレッドでプロセスを実行する方法を学んでいます。Nokogiri を使用して 170 MB の xml ファイルを解析し、.each() 内の新しいスレッド内にデータベース (Postgresql) 挿入を配置しています。この非常に大きなファイルを処理し、複数のスレッドで実行するためのより良いアプローチを提案してください。これが私がこれまでに持っているものです。
conn = PGconn.connect("localhost", 5432, "", "", "oaxis","postgres","root")
f = File.open("metadata.xml")
doc = Nokogiri::XML(f)
counter = 0
threadArray = []
doc.xpath('//Title').each do |node|
threadArray[counter] = Thread.new{
titleVal = node.text
random_string = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join
conn.prepare('ins'+random_string, 'insert into sample_tbl (title) values ($1)')
conn.exec_prepared('ins'+random_string, [titleVal])
puts titleVal+" ==>"+random_string+ " \n"
counter += 1
}
end
threadArray.each {|t| t.join}
f.close