コード例 #1
0
ファイル: ramlrucache.py プロジェクト: cyplp/modularcache
    def putInCache(self, func, result, *args, **kwargs):
        """
        >>> r = RamLRUCache({'size' : 5})
        >>> r.putInCache('a', 3, [1, 2], {})
        3
        >>> r._order
        ['a||(([1, 2], {}), {})||{}']
        >>> r.putInCache('b', 66, [1, 3], {})
        66
        >>> r.putInCache('c', 3.14, [1, 3], {})
        3.1400000000000001
        >>> r._order
        ['a||(([1, 2], {}), {})||{}', 'b||(([1, 3], {}), {})||{}', 'c||(([1, 3], {}), {})||{}']
        >>> r._cache
        {'a': {'([1, 2], {})': {'{}': 3}}, 'c': {'([1, 3], {})': {'{}': 3.1400000000000001}}, 'b': {'([1, 3], {})': {'{}': 66}}}
        """

        key = self._computeKey(func, args, kwargs )

        self._order.append(key)
        if len(self._order) >= self._size:
            tmp = self._order.pop(0).split('||')
            del(_cache[tmp[0]][tmp[1]][tmp[2]])

        return RamCache.putInCache(self, func, result, *args, **kwargs)