使用rubyzip解压缩文件时的内存使用情况



我在rake任务中使用rubyzip来解压缩一些文件,但我发现解压缩文件后所用的内存不可用。我必须重新启动服务器才能回收内存。还有其他人有类似的问题吗?有解决办法吗?

我正在使用与github 上的示例相同的代码进行解压缩

https://github.com/rubyzip/rubyzip

Zip::File.open('foo.zip') do |zip_file|
  # Handle entries one by one
  zip_file.each do |entry|
    # Extract to file/directory/symlink
    puts "Extracting #{entry.name}"
    entry.extract(dest_file)
  end
end

如有任何建议,我们将不胜感激!

如果必须对数据进行操作,可以直接从zip归档中进行流式传输,一次使用一行。使用此代码,我对内存使用没有问题。

require 'csv'
require 'zip'
zip_file = Zip::File.open('foo.zip')
entry = zip_file.entries.first
puts "Extracting #{entry.name}"
CSV.parse(entry.get_input_stream, headers: true) do |row|
  # do something with row
  p row
end

编辑:

您可以对流进行迭代(不限于解析CSV):

entry.get_input_stream.each do |line|
   p line
end

相关内容

  • 没有找到相关文章

最新更新