> On Oct 22, 2020, at 5:51 PM, Pasha Stetsenko <stpa...@gmail.com> wrote:
>
> Dear Python gurus,
>
> I'm a maintainer of a python library "datatable" (can be installed from
> PyPi), and i've been recently trying to debug a memory leak that occurs in
> my library.
> The program that exposes the leak is quite simple:
> ```
> import datatable as dt
> import gc # just in case
>
> def leak(n=10**7):
> for i in range(n):
> z = dt.update()
>
> leak()
> gc.collect()
> input("Press enter")
> ```
Hi Pasha,
dt.update() is acting on some object(s) outside the leak function body. And so
even though, local objects z, i and n are eventually garbage collected, the
side-effects of dt.update() are not affected by the return from the leak
function. You need to look at your module and carefully trace what happens when
dt.update() is executed. It seems to me that any memory consumed when
dt.update() is executed will not be released when the leak function returns.
humbly,
Karen
--
https://mail.python.org/mailman/listinfo/python-list