diff options
author | Pauli Virtanen <pav@iki.fi> | 2012-02-12 11:14:34 +0100 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2012-02-16 19:39:29 -0700 |
commit | c4482f56b347760260a695a72f7ccbd26d02756c (patch) | |
tree | 9159ba3d2e4aa7b3da47537a1537302e49b5212c /numpy/lib/tests/test_io.py | |
parent | 56a54727433d38cc3e9187c029a0d2bcfdcfcc2f (diff) | |
download | numpy-c4482f56b347760260a695a72f7ccbd26d02756c.tar.gz |
ENH: lib: break reference cycle in NpzFile (#2048)
This allows these objects to be freed by refcount, rather than requiring
the gc, which can be useful in some situations.
Diffstat (limited to 'numpy/lib/tests/test_io.py')
-rw-r--r-- | numpy/lib/tests/test_io.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/numpy/lib/tests/test_io.py b/numpy/lib/tests/test_io.py index 04ca3fb4e..949d8fb45 100644 --- a/numpy/lib/tests/test_io.py +++ b/numpy/lib/tests/test_io.py @@ -6,6 +6,7 @@ from tempfile import mkstemp, NamedTemporaryFile import time from datetime import datetime import warnings +import gc from numpy.testing.utils import WarningManager import numpy as np @@ -1525,6 +1526,20 @@ def test_npzfile_dict(): assert_('x' in list(z.iterkeys())) +def test_load_refcount(): + # Check that objects returned by np.load are directly freed based on + # their refcount, rather than needing the gc to collect them. + + f = StringIO() + np.savez(f, [1, 2, 3]) + f.seek(0) + + gc.collect() + n_before = len(gc.get_objects()) + np.load(f) + n_after = len(gc.get_objects()) + + assert_equal(n_before, n_after) if __name__ == "__main__": run_module_suite() |