Saat ini saya mencoba membaca data dari file .csv dengan Python 2.7 hingga 1 juta baris, dan 200 kolom (file berkisar dari 100mb hingga 1.6gb). Saya dapat melakukan ini (sangat lambat) untuk file dengan kurang dari 300.000 baris, tetapi begitu saya pergi ke atas, saya mendapatkan kesalahan memori. Kode saya terlihat seperti ini:
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
Alasan klausa else dalam fungsi getstuff adalah bahwa semua elemen yang sesuai dengan kriteria akan dicantumkan bersama dalam file csv, jadi saya meninggalkan loop ketika saya melewatinya untuk menghemat waktu.
Pertanyaan saya adalah:
Bagaimana saya bisa mengatur agar ini bekerja dengan file yang lebih besar?
Apakah ada cara agar saya bisa membuatnya lebih cepat?
Komputer saya memiliki RAM 8GB, menjalankan Windows 7 64bit, dan prosesornya 3,40 GHz (tidak yakin informasi apa yang Anda butuhkan).