Я использую цикл for, который загружает файлы TSV объемом около 1 гб в серии pandas. Они всегда назначаются одной и той же переменной, а затем я использую Series.add(), чтобы добавить их в серию, содержащую общее число номеров в серии.Переназначение на Pandon pandas series: сборка мусора
Обновление: Чтобы уточнить, все ЦС имеют более или менее одинаковый индекс, поэтому длина общей серии не изменит только значения, которые будут добавлены.
Я бы ожидал, что память «старой» серии будет периодически освобождаться, чтобы использование памяти оставалось в пределах границ. Тем не менее, использование памяти увеличивается до тех пор, пока не будет исчерпана память на 62 ГБ машины.
Есть ли у кого-нибудь идеи, как решить проблему? Я попытался удалить переменную явно в цикле, и я попытался вызвать gc.collect() в цикле. Оба не помогли. Я использую Python 2.73.
Подробнее:
В TSV файлы, первые два столбца индекса (хромосома и положение) и третий столбец являются целыми числами.
код:
total = pd.read_csv(coverage_file1,sep='\t',index_col=[0,1],header=None,names= ['depth'],squeeze=True)
for file in coverage_files:
series = pd.read_csv(file,sep='\t',index_col=[0,1],header=None,names=['depth'],squeeze=True)
total = total.add(series,fill_value=0).astype(int)
del series # I tried with and without this and the next line
gc.collect()
total.to_csv(args.out,sep='\t',header=None)
Возможно, что это ошибка при использовании сжатия; попробуйте без него (и просто подмножество для получения серии); если это другой файл PLS, сообщение об ошибке на github – Jeff
@Jeff, проблема не возникает без сжатия – feilchenfeldt