Open
Description
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