Python 3.x 在16GB内存计算机上无内存错误读取大型语言语料库
我发现Google NMT使用编解码器读取输入数据文件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左右的大型数据集而不出现
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左右的大型数据集而不出现内存错误吗?我真的很感激能帮助我阅读大量语言语料库的解决方案“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)