我有一个1 GB的CSV文件(16-char-max-string;int
)
hello;1798732
you;1762
...
解析为dict
的速度很慢,这就是为什么我想执行一次,将其另存为pickle文件(或任何其他序列化方法),然后重新打开这个已经处理过的文件供进一步使用。
我试过了:
import csv, time
import cPickle as pickle
d = dict()
start = time.time()
with open('mycsv.csv', mode='r') as f:
reader = csv.reader(f, delimiter=';')
for r in reader:
d[r[0]] = int(r[1])
print time.time() - start
with open('mydict', 'wb') as f:
pickle.dump(d, f)
但它确实不起作用:我使用Python 64位来做,但我看到在此过程中内存使用量爆炸超过4 GB! (然后更多,它几乎崩溃了我的电脑)。
如何以更经济的RAM方式将此CSV文件解析为序列化的dict
?