Bug report
Bug description:
import random import time from threading import Lock, Thread import psutil class Cache: def __init__(self, cap): self.m = {} self.mu = Lock() self.cap = cap def get(self, key): with self.mu: try: v = self.m[key] except KeyError: return 0, False return v, True def set(self, key, value): with self.mu: self.m[key] = value if len(self.m) > self.cap: self.m.popitem() def set_key(cache): c = 0 while True: key = random.randint(0, 1000000000) cache.set(key, key) c += 1 if c == 100000: c = 0 print(".", end="", flush=True) def run(): cache = Cache(500000) for _ in range(4): thread = Thread(target=set_key, args=[cache]) thread.start() process = psutil.Process() while True: time.sleep(10) with cache.mu: print(f"rss: {process.memory_info().rss}, dict len: {len(cache.m)}") if __name__ == "__main__": run()
Platform: macOS-14.6.1-x86_64-i386-64bit-Mach-O
Python 3.13.3t
uv run --python 3.13.3t mem.py ............................................................rss: 384696320, dict len: 500000 .......................................................rss: 636743680, dict len: 500000 .......................................................rss: 888782848, dict len: 500000 .........................................................rss: 1140793344, dict len: 500000 ......................................................rss: 1392799744, dict len: 500000
Python 3.13.3
uv run --python 3.13.3 mem.py ....................................................................................................rss: 159633408, dict len: 500000 ...............................................................................................................rss: 159813632, dict len: 500000 .........................................................................................................rss: 159981568, dict len: 500000 ...........................................................................................................rss: 160149504, dict len: 500000 ......................................................................................................rss: 160301056, dict len: 500000
CPython versions tested on:
3.13
Operating systems tested on:
macOS