Я пытаюсь перебрать более 100 000 изображений, захватить некоторые функции изображения и сохранить полученный dataFrame на диске в виде файла рассола.
К сожалению, из-за ограничений оперативной памяти я вынужден разделить изображения на куски по 20 000 и выполнять над ними операции перед сохранением результатов на диск.
Написанный ниже код должен сохранять кадр данных результатов для 20 000 изображений перед запуском цикла обработки. следующие 20 000 изображений.
Однако это, похоже, не решает мою проблему, поскольку память не освобождается из ОЗУ в конце первого цикла for.
Итак, где-то при обработке 50-тысячной записи программа вылетает из-за ошибки нехватки памяти.
Я пробовал удалять объекты после их сохранения в диск и вызывает сборщик мусора, однако использование оперативной памяти, похоже, не снижается.
Что мне не хватает?
# file_list_1 contains 100,000 images
file_list_chunks = list(divide_chunks(file_list_1, 20000))
for count, f in enumerate(file_list_chunks):
# make the Pool of workers
pool = ThreadPool(64)
results = pool.map(get_image_features, f)
# close the pool and wait for the work to finish
list_a, list_b = zip(*results)
df = pd.DataFrame({'filename': list_a, 'image_features': list_b})
df.to_pickle("PATH_TO_FILE" + str(count) + ".pickle")
del list_a
del list_b
del df
gc.collect()
pool.close()
pool.join()
print("pool closed")
Подробнее здесь: https://stackoverflow.com/questions/561 ... -up-memory
Как уничтожить объекты Python и освободить память ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как я могу освободить память, выделенную внешними вызовами C в Python?
Anonymous » » в форуме Python - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как правильно освободить память при использовании CString с cgo в golang?
Anonymous » » в форуме C++ - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-