具有CSV阅读器和StringIO且占用过多内存的Python 3

时间:2019-04-15 16:36:26

标签: python python-3.x csv stringio

此处的CSV文件约为500MB,具有270万行。通过广泛的测试,我已经证实for row in read_new:的内存消耗增加了三倍,而我不明白为什么。内存增加不会在for语句之前或之后发生。

有人能说明为什么会这样吗?

我知道有更好的方法来执行此脚本,但是我有这样做的理由。我只是想弄清楚为什么会这样,并且是否有比StringIO()更合适的缓冲区可用于此目的。

import io
import csv
import time

filename = 'rcs_batch_032519.csv'

csv_fob = open(filename, 'r')
fix_fob = io.StringIO()

reader = csv.reader(csv_fob)
writer = csv.writer(fix_fob)

for row in reader:
    writer.writerow(row)

fix_fob.seek(0)
read_new = csv.reader(fix_fob)

# Memory explodes here, from 634MB to 2.36GB, after executing 'for' statement
for row in read_new:
    time.sleep(30)
    pass

0 个答案:

没有答案