현재 Python 2.7의 .csv 파일에서 최대 1 백만 개의 행과 200 개의 열 (파일 범위는 100MB에서 1.6GB)로 데이터를 읽으려고합니다. 행이 300,000 개 미만인 파일에 대해 (매우 느리게) 수행 할 수 있지만 그 이상으로 이동하면 메모리 오류가 발생합니다. 내 코드는 다음과 같습니다.
def getdata(filename, criteria):
data=[]
for criterion in criteria:
data.append(getstuff(filename, criteron))
return data
def getstuff(filename, criterion):
import csv
data=[]
with open(filename, "rb") as csvfile:
datareader=csv.reader(csvfile)
for row in datareader:
if row[3]=="column header":
data.append(row)
elif len(data)<2 and row[3]!=criterion:
pass
elif row[3]==criterion:
data.append(row)
else:
return data
getstuff 함수에서 else 절의 이유는 기준에 맞는 모든 요소가 csv 파일에 함께 나열되므로 시간을 절약하기 위해 지나칠 때 루프를 떠나기 때문입니다.
내 질문은 다음과 같습니다.
더 큰 파일에서이 작업을 수행하려면 어떻게해야합니까?
더 빨리 만들 수있는 방법이 있습니까?
내 컴퓨터에는 64 비트 Windows 7을 실행하는 8GB RAM이 있으며 프로세서는 3.40GHz입니다 (필요한 정보가 무엇인지 확실하지 않음).