Python 3.x 在16GB内存计算机上无内存错误读取大型语言语料库

Python 3.x 在16GB内存计算机上无内存错误读取大型语言语料库,python-3.x,tensorflow,nlp,bigdata,machine-translation,Python 3.x,Tensorflow,Nlp,Bigdata,Machine Translation,我发现Google NMT使用编解码器读取输入数据文件 import codecs import tensorflow as tf with codecs.getreader("utf-8")(tf.gfile.GFile(input_file, mode="rb")) as f: return f.read().splitlines() 我有两个问题 由于个人计算机使用的是tf.gfile.gfile,因此上述支持在16GB RAM的个人计算机中读取大于5GB左右的大型数据集而不出现

我发现Google NMT使用编解码器读取输入数据文件

import codecs
import tensorflow as tf
with codecs.getreader("utf-8")(tf.gfile.GFile(input_file, mode="rb")) as f:
    return f.read().splitlines()
我有两个问题

  • 由于个人计算机使用的是
    tf.gfile.gfile
    ,因此上述支持在16GB RAM的个人计算机中读取大于5GB左右的大型数据集而不出现内存错误吗?我真的很感激能帮助我阅读大量语言语料库的解决方案
  • 没有得到内存错误

    。 2.我已经在代码中导入了编解码器,但为什么会出现此错误
    “NameError:未定义名称“codecs”

    编辑1:

    两个人。得到

    OutOfRange错误回溯(最近一次调用)
    在()
    6输入文件=os.path.join(源路径)
    7使用codecs.getreader(“utf-8”)(tf.gfile.gfile(input_file,mode=“rb”))作为f:
    ---->8 source_text=f.read().splitlines()
    

    当操作迭代超过有效输入范围时,将引发OutOfRangeError。我怎样才能解决这个问题

    如果文件大小非常大,建议逐行处理。 下面的代码将实现此功能:

    with open("input_file") as infile:
        for line in infile:
            do_something_with(line)
    

    你能在问题中输入你的导入行吗!!你想用这个文件做什么?因为这似乎是一个基于行的文本文件,所以您可以直接读取它,而不必在内存中有多行。另外,当您只想读取文件时,为什么在这里使用
    tensorflow.gfile.gfile
    ?为什么不从Python标准库中打开?你使用的是什么版本的Python?我刚刚测试了一个简单的两行代码
    键入“帮助”、“版权”、“信用证”或“许可证”,了解更多信息。>>>导入编解码器>>>编解码器。打开(“Sample.csv”)>>>
    编解码器导入工作正常。那应该是我的错。你对我的问题1和问题2中的最新更新有答案吗?我真的很感谢你的帮助这似乎是工作,但内核自动死亡。这是可以改进的吗?哦,但是这段代码一次只能读一行。当你阅读下一篇文章时,上一篇文章会被垃圾回收,所以不应该有内存问题,这对我来说很好。
    with open("input_file") as infile:
        for line in infile:
            do_something_with(line)