Я работал над оптическим потоком script, используя метод Лукаса Канаде, как проект университета. Хотя он работает хорошо, есть кое-что, что я не могу понять. В начале он использует несколько МБ памяти, но эта сумма увеличивается быстро каждую секунду. К тому времени, когда он вычисляет OF для 1 кадра 480p фильмов, он использует около 1 ГБ. Когда он достигает 1,9 ГБ, он внезапно останавливается и остается там, даже если его оставляют на несколько часов.
Я попытался запустить script на другом ПК и на нем, он "только" использует 1 ГБ.
Это действительно странное поведение, поскольку, согласно моим расчетам, оно должно использовать намного меньше 100 МБ.
Самое удивительное для меня было то, что после script вычисляет один кадр, я печатал количество объектов, которые собирает сборщик мусора, и он составлял около 2 миллионов, а затем печатал его снова после принудительного сбора, и это было точно такое же, Я ждал, когда будет вычислен 2-й кадр (в то же время использование памяти увеличено на ~ 1 ГБ) и script напечатано количество объектов, просматриваемых GC - точно такое же число, близкое к 2 миллионам. Так что это значит? Этот numpy написан на C и имеет утечки памяти?
Мне бы очень хотелось понять это поведение.
Вот код: http://pastebin.com/WSi7akY4