此处的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