Многопроцессорный модуль управления памятью Python 2 vs 3
Последние несколько лет я работал над модулем python для параллельной обработки спутниковых изображений и недавно заметил, что использование памяти моим модулем сильно отличается между питоном 2 и 3. Эта проблема всегда возникает, когда я начинаю распараллеливание с использованием модуля многопроцессорной обработки. Кто-нибудь знает причину этого?
Основной процесс моего кода заключается в следующем: я отправляю рабочим разные части изображения, используя полную карту памяти полного изображения и координаты для извлечения необходимого фрагмента данных. Эти фрагменты затем обрабатываются параллельно и сохраняются на диск.
Когда я запускаю свой код с python 2, во время обработки память иногда использует стремительный рост, тогда как с python 3 она кажется гораздо более стабильной. В Python 2 использование памяти иногда может быть более чем в пять раз больше... Мой код во многом зависит от использования пустых меммапов для доступа к моим данным на диске, но я не уверен, связано ли это с этим.
Я думаю, что будет нормально попросить моих пользователей работать только на Python 3, но было бы неплохо, если бы пользователи Python 2 тоже могли использовать мой модуль.