python 合并上百个文件 memory error
我code的主要部分大概是这样importnumpyasnpfilenames=[os.path.join(corpus_path,fn)forfninsorted(os...
我code的主要部分大概是这样
import numpy as np
filenames = [os.path.join(corpus_path, fn) for fn in sorted(os.listdir(corpus_path))]
current_text = []
for filename in filenames:
inputtext = open(filename, 'r', encoding='utf-8')
current_text.append(inputtext.read())
alltext = np.append(current_text, '')
我打算用这段code把大约300个txt文档合并成一个文档,然后做下一步的处理。这些文档总共的大小是约220MB。我现在遇到的问题是,运行的时候报错说memory error。求问应该怎么解决?跪谢! 展开
import numpy as np
filenames = [os.path.join(corpus_path, fn) for fn in sorted(os.listdir(corpus_path))]
current_text = []
for filename in filenames:
inputtext = open(filename, 'r', encoding='utf-8')
current_text.append(inputtext.read())
alltext = np.append(current_text, '')
我打算用这段code把大约300个txt文档合并成一个文档,然后做下一步的处理。这些文档总共的大小是约220MB。我现在遇到的问题是,运行的时候报错说memory error。求问应该怎么解决?跪谢! 展开
2个回答
推荐于2017-08-16 · 知道合伙人互联网行家
关注
展开全部
通常不会遇到这个问题。python解决小问题不会有memory error
可能是使用了大对象也可能是使用了递归。没有合适规划临时或者是堆栈数据的数量。
那么有问题大部分是因为dict或者是list太大了。解决办法是使用优化过的数据结构,比如blist,或者是直接使用numpy的数组,array数据结构等等。
解决办法多。还可以使用64位版本。其实意义不大。python自己不需要管理大内存。也不需要大内存操作。
所以要用分布式架构解决问题。把问题分解成500MB以下的小问题,这样即使是32位的python也可以轻松完成。
内存管理的事情还是交给 C, C++这样的程序比较合适。2GB以下可以使用共享内存。 如果超过了,比如8,16, 96gb等。可以考虑使用数据库去管理。
如果你一定要用大对象也没有关系,其实效率也是挺高的。只是算法要优化。
可能是使用了大对象也可能是使用了递归。没有合适规划临时或者是堆栈数据的数量。
那么有问题大部分是因为dict或者是list太大了。解决办法是使用优化过的数据结构,比如blist,或者是直接使用numpy的数组,array数据结构等等。
解决办法多。还可以使用64位版本。其实意义不大。python自己不需要管理大内存。也不需要大内存操作。
所以要用分布式架构解决问题。把问题分解成500MB以下的小问题,这样即使是32位的python也可以轻松完成。
内存管理的事情还是交给 C, C++这样的程序比较合适。2GB以下可以使用共享内存。 如果超过了,比如8,16, 96gb等。可以考虑使用数据库去管理。
如果你一定要用大对象也没有关系,其实效率也是挺高的。只是算法要优化。
推荐于2016-06-20 · 知道合伙人软件行家
关注
展开全部
你应该 读一个文件,就往要合并的文件里面写,不要全部放到内存;会导致内存占用过大,会出现程序崩溃的。
追问
所以具体code应该怎么写呢?
追答
filenames = [os.path.join(corpus_path, fn) for fn in sorted(os.listdir(corpus_path))]
outputtext = open("out.txt", 'w+')
for filename in filenames:
inputtext = open(filename, 'r')
outputtext.writelines(inputtext.readlines())
inputtext.close()
outputtext.close()
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询