Message293234
The arguments of a function which was decorated to be a context manager are stored inside the context manager, and are thus kept alive.
This is a memory leak.
Example:
@contextmanager
def f(a):
do_something_with(a)
a = None # should release the memory
yield
if this is now called with something big, say
with f(something_really_huge):
pass
then this something_really_huge is kept alive during the with statement, even though the function explicitly let go of it. |
|
Date |
User |
Action |
Args |
2017-05-08 14:04:41 | Martin.Teichmann | set | recipients:
+ Martin.Teichmann |
2017-05-08 14:04:41 | Martin.Teichmann | set | messageid: <1494252281.4.0.796080303271.issue30306@psf.upfronthosting.co.za> |
2017-05-08 14:04:41 | Martin.Teichmann | link | issue30306 messages |
2017-05-08 14:04:41 | Martin.Teichmann | create | |
|