从多个文件读取时出现内存错误

时间:2015-06-01 17:47:49

标签: python memory iterator out-of-memory

我正在阅读位于桌面文件夹中的15个文件。我可以在前几个文件中读取没有问题,但是当我进一步了解它时,我最终得到的内存错误看起来是由迭代器中内置的Pythons引起的。只是一个注释,我使用多个列表来保存所有数据,因为我使用的是32位python,因为文件很大,所以它们很快就会填满。

x=0 #represents the file being read
for file in glob.glob(path): #reads all files in a folder
    with open(file) as f: 
        print (f)
        for line in f:    
            if "jack" in line: 

                if(x<=3):#prevent memory error
                    jack1.append(line)

                elif(x>3 and x<=6):
                    jack2.append(line)

                elif(x>6 and x<=8):
                    jack3.append(line)

                elif(x>8 and x<=9):#prevent memory error with try except 
                    try:
                        jack4.append(line)

                    except:
                        jack5.append(line)

Traceback (most recent call last):
  File "C:\Users\erik.kniaz\workspace\arif help\jack.py", line 102, in <module>
for line in f:    
MemoryError

1 个答案:

答案 0 :(得分:1)

  

我正在使用32位python

有你的问题。 32位进程generally speaking每个虚拟内存限制为4 GB,减去内核空间,这可能很重要。您需要切换到64位计算或重新设计程序以减少内存消耗。这通常是通过将数据推送回文件系统而不是将其保存在内存中来完成的。