내가 처음에 (사람)에 시도한 50 + GB의 XML 파일이 노코 기리 :왜이 예에서 루비 스레드 역할을 수행 - 효율적으로 누락 된 파일
있어 killed: 9
취급 - 분명 :)
지금 나는 (그것을)이 자상와 진흙 루비 스레드 물로 해요 : 결과 파일을 작성할 때
#!/usr/bin/env ruby
def add_vehicle index, str
IO.write "ess_#{index}.xml", str
#file_name = "ess_#{index}.xml"
#fd = File.new file_name, "w"
#fd.write str
#fd.close
#puts file_name
end
begin
record = []
threads = []
counter = 1
file = File.new("../ess2.xml", "r")
while (line = file.gets)
case line
when /<ns:Statistik/
record = []
record << line
when /<\/ns:Statistik/
record << line
puts "file - %s" % counter
threads << Thread.new { add_vehicle counter, record.join }
counter += 1
else
record << line
end
end
file.close
threads.each { |thr| thr.join }
rescue => err
puts "Exception: #{err}"
err
end
는 어떻게 든이 코드는 '건너 뛰고'하나 개 또는 두 개의 파일 - 흠!?
그냥 호기심. 이 파일은 무엇입니까? 나는 그 노드를 찾았고, 덴마크의 자동차 부품 목록을 발견했다. 또는 뭔가. –
큰 파일을 쓰다 버리려고하면 모든 언어가 중단됩니다. 대신 XML을 파싱 할 때 [Nokogiri가 구현하는 SAX 파서] (http://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/SAX)를 사용해야합니다. 나는 그것을 사용하는 방법에 대해 읽는 것이 좋습니다. –