Известно что питон не возвращает системе память, которую он у неё захавал - он сам ей рулит и переиспользует. Но вдруг есть какая-то хитрая функция, которая может вернуть свободную память в систему?
У меня в приложении используется Pillow для ресайза картинок. Причём я запускаю задачки ресайза в N-тредах, где N - число ядер. Иногда, похоже, прилетают довольно большие картинки, и при этом одновременно. В результате питон может захавать сразу N * ImageSize памяти.
И ладно бы оно захавало сколько надо для N * MaxImageSize и остановилось, но ведь нет - оно почему-то со временем начинает хавать больше и больше. Анализатор занятой памяти питона показывают, что под всякие питонячие структуры в приложении занято всего 30Мб. При этом процес занимает, например, 2.8 Гб памяти.
Подозреваю, что из-за фрагментации памяти, питон иногда не может "всунуть" новую картинку ни в один из своих свободных блоков памяти, и просто запрашивает доп. память у системы.
Как бы мне решить эту проблемку?