Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #51058
| From | Chris Hinsley <chris.hinsley@gmail.com> |
|---|---|
| Newsgroups | comp.lang.python |
| Date | 2013-07-22 21:12 +0100 |
| Message-ID | <2013072221125291649-chrishinsley@gmailcom> (permalink) |
| References | <2013072219364160391-chrishinsley@gmailcom> <2013072219424735368-chrishinsley@gmailcom> <mailman.4987.1374522447.3114.python-list@python.org> |
| Subject | Re: odd behavoiur seen |
On 2013-07-22 19:47:33 +0000, Peter Otten said:
> Chris Hinsley wrote:
>
>> On 2013-07-22 18:36:41 +0000, Chris Hinsley said:
>>
>>> Folks, I have this decorator:
>>>
>>> def memoize(maxsize):
>>> def _memoize(func):
>>> lru_cache = {}
>>> lru_list = []
>>
>> Other clues, I use it on a recursive function:
>>
>> @memoize(64)
>> def next_move(board, colour, alpha, beta, ply):
>> if ply <= 0:
>> return evaluate(board) * colour
>> for new_board in all_moves(board[:], colour):
>> score = -next_move(new_board, -colour, -beta, -alpha, ply - 1)
>> if score >= beta:
>> return score
>> if score > alpha:
>> alpha = score
>> return alpha
>>
>> And I notice I don't get the strange problem on a non-recursive
>> function ! Or at least I don't seam to.
>
> That's indeed the problem:
>
>> if len(lru_list) >= maxsize:
>> del(lru_cache[lru_list[0]])
>> del(lru_list[0])
>> ret = func(*args, **kwargs)
>> lru_cache[key] = ret
>> lru_list.append(key)
>
> You delete a cached item, then call the original function which causes calls
> of the decorated function. This causes a length check which sees the already
> reduced length and decides that the cache is not yet full.
>
> If you remove the oldest item after calling the original function you should
> be OK.
Ah ! Thank you kindly sir !
Chris
Back to comp.lang.python | Previous | Next — Previous in thread | Find similar | Unroll thread
odd behavoiur seen Chris Hinsley <chris.hinsley@gmail.com> - 2013-07-22 19:36 +0100
Re: odd behavoiur seen Chris Hinsley <chris.hinsley@gmail.com> - 2013-07-22 19:42 +0100
Re: odd behavoiur seen Peter Otten <__peter__@web.de> - 2013-07-22 21:47 +0200
Re: odd behavoiur seen Chris Hinsley <chris.hinsley@gmail.com> - 2013-07-22 21:12 +0100
csiph-web