Ключевое слово del
- способ сделать это; Я не уверен, что многое нужно сделать для того, чтобы вы сделали код «грязным». Python людям нравится говорить, что явный лучше, чем неявный , и это будет его примером.
В противном случае объявляйте промежуточные переменные в области действия функции и пространство, используемое этими переменные будут освобождены (или, скорее, помечены для «сборки мусора»; см. ниже), когда функция завершится.
Так что вы можете:
import gc
all_data = pd.read_csv(huge_file_name)
part_data = all_data.loc['ColumnName1', 'ColumnName2','ColumnName3']
data_filtered = part_data.loc[:,part_data['ColumnName2']==-1]
del all_data, part_data
# and if you're impatient for that memory to be freed, like RIGHT now
gc.collect()
Или вы можете :
import gc
def filter_data(infile):
all_data = pd.read_csv(infile)
part_data = all_data.loc['ColumnName1', 'ColumnName2','ColumnName3']
return part_data.loc[:,part_data['ColumnName2']==-1]
data_filtered = filter_data(huge_file_name)
# force out-of-scope variables to be garbage collected RIGHT now
gc.collect()
Ключевое слово del
освобождает переменную из локальной области видимости, так что она может (в конечном итоге) собирать мусор, но память освобождается, когда переменные go выходят из области видимости, и не могут быть немедленно возвращены операционная система. Поток SO AM C содержательно указал на вас с подробностями.
Стратегии сбора мусора являются предметом информатики PhD-уровня, но моя интуиция заключается в том, что G C запускается только тогда, когда существует некоторое «давление» во время выполнения Python для освобождения памяти; как в новых объявлениях переменных, которые должны были бы использовать некоторое количество памяти, ранее использовавшейся переменными вне области видимости.
Вы были осторожны, чтобы указать, что это большой файл CSV, читаемый в один (Pandas) структура данных, но следует помнить о том, что переменные, выходящие за пределы области действия, обычно автоматически собираются мусором, и обычно вам не нужно самостоятельно управлять этим процессом .
Здесь - некоторый фон для сбора мусора в Python, который вы можете найти осветительным, а здесь - обсуждение других случаев, когда del
полезен (например, удаление фрагментов из списка).