File tree Expand file tree Collapse file tree 1 file changed +20
-1
lines changed
Expand file tree Collapse file tree 1 file changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -74,6 +74,7 @@ def sweep(self):
7474 # O(m)
7575 now = time .time ()
7676 c = 0
77+ values_closed = list () # list is cheaper to create
7778 while len (self ._last_visits ) > 0 :
7879 least = self ._last_visits [0 ]
7980 if now - least <= self .timeout :
@@ -83,7 +84,9 @@ def sweep(self):
8384 if key in self ._store :
8485 if now - self ._keys_to_last_time [key ] > self .timeout :
8586 value = self ._store [key ]
86- self .close_callback (value )
87+ if value not in values_closed :
88+ self .close_callback (value )
89+ values_closed .append (value )
8790 for key in self ._time_to_keys [least ]:
8891 self ._last_visits .popleft ()
8992 if key in self ._store :
@@ -126,5 +129,21 @@ def test():
126129 assert 'a' not in c
127130 assert 'b' not in c
128131
132+ global close_cb_called
133+ close_cb_called = False
134+
135+ def close_cb (t ):
136+ global close_cb_called
137+ assert not close_cb_called
138+ close_cb_called = True
139+
140+ c = LRUCache (timeout = 0.1 , close_callback = close_cb )
141+ c ['s' ] = 1
142+ c ['s' ]
143+ time .sleep (0.1 )
144+ c ['s' ]
145+ time .sleep (0.3 )
146+ c .sweep ()
147+
129148if __name__ == '__main__' :
130149 test ()
You can’t perform that action at this time.
0 commit comments