У меня есть 1.6 ГБ для использования в процессе python. Я пишу большой файл csv, данные которого поступают из базы данных. Проблема заключается в следующем: после записи файла память (> 1,5 ГБ) не будет выпущена немедленно, что приведет к ошибке в следующем бите кода (выделение памяти не удастся из-за того, что ОС не может найти достаточно памяти для выделения).Как я могу освободить память после использования csv.writer в python?
Существует ли какая-либо функция, которая поможет мне освободить эту память? Или у вас есть лучший способ сделать это?
Это сценарий, я использую для записи файла, пишет на куски, чтобы иметь дело с проблемой памяти:
size_to_read = 20000
sqlData = rs_cursor.fetchmany(size_to_read)
c = csv.writer(open(fname_location, "wb"))
c.writerow(headers)
print("- Generating file %s ..." % out_fname)
while sqlData:
for row in sqlData:
c.writerow(row)
sqlData = rs_cursor.fetchmany(size_to_read)
Является ли код ошибкой после последней строки? или это последняя строка, на которой он ошибается? – Adam
Нет, это идет hundres строк вниз, которые используют низкую память, и ошибка появляется в этой строке: file_obs = int (subprocess.check_output (["cat% s /% s | wc -l"% (locationToUpload, filename)], shell = True)) – ebertbm
Возможно, я ошибаюсь, но ... 'sqlData = rs_cursor.fetchmany (size_to_read)' в последней строке? Все, что вы только что написали в файле (который вы еще не закрыли), вы загружаете все это снова? – roganjosh