BUG: PeriodDtype and IntervalDtype holding references to itself when object is deleted by mroeschke · Pull Request #54184 · pandas-dev/pandas (original) (raw)
In [1]: import pandas as pd
In [2]: import weakref
In [3]: pdt = pd.PeriodDtype(freq="D")
In [4]: ref = weakref.ref(pdt)
In [5]: del pdt
In [6]: import gc; gc.collect()
Out[6]: 1119
In [7]: ref()
Out[7]: period[D]
In [8]: idt = pd.IntervalDtype("interval[int64, right]")
In [9]: ref2 = weakref.ref(idt)
In [10]: del idt
In [11]: import gc; gc.collect()
Out[11]: 615
In [12]: ref2()
Out[12]: interval[int64, right]
# PR
In [2]: %timeit pd.IntervalDtype("interval[int64, right]")
11.1 µs ± 13 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)
In [3]: %timeit pd.PeriodDtype(freq="D")
22.2 µs ± 135 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
# main
In [2]: idt = pd.IntervalDtype("interval[int64, right]")
In [3]: %timeit pd.IntervalDtype("interval[int64, right]")
14 µs ± 28.6 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)
In [4]: pdt = pd.PeriodDtype(freq="D")
In [5]: %timeit pd.PeriodDtype(freq="D")
22.2 µs ± 182 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)