CSV-файл имеет размер около 500 МБ и 2,7 миллиона строк.Путем всестороннего тестирования я убедился, что 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