Exemple #1
0
    def test_lru_with_maxsize_none(self):
        @functools.lru_cache(maxsize=None)
        def fib(n):
            if n < 2:
                return n
            return fib(n - 1) + fib(n - 2)

        self.assertEqual([fib(n) for n in range(16)], [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610])
        self.assertEqual(fib.cache_info(), functools._CacheInfo(hits=28, misses=16, maxsize=None, currsize=16))
        fib.cache_clear()
        self.assertEqual(fib.cache_info(), functools._CacheInfo(hits=0, misses=0, maxsize=None, currsize=0))
 def test_lru_with_maxsize_none(self):
     @functools.lru_cache(maxsize=None)
     def fib(n):
         if n < 2:
             return n
         return fib(n-1) + fib(n-2)
     self.assertEqual([fib(n) for n in range(16)],
         [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610])
     self.assertEqual(fib.cache_info(),
         functools._CacheInfo(hits=28, misses=16, maxsize=None, currsize=16))
     fib.cache_clear()
     self.assertEqual(fib.cache_info(),
         functools._CacheInfo(hits=0, misses=0, maxsize=None, currsize=0))
Exemple #3
0
 def test_lru_with_keyword_args_maxsize_none(self):
     @fastcache.clru_cache(maxsize=None)
     def fib(n):
         if n < 2:
             return n
         return fib(n=n-1) + fib(n=n-2)
     self.assertEqual([fib(n=number) for number in range(16)],
         [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610])
     self.assertEqual(fib.cache_info(),
         _CacheInfo(hits=28, misses=16, maxsize=None, currsize=16))
     fib.cache_clear()
     self.assertEqual(fib.cache_info(),
         _CacheInfo(hits=0, misses=0, maxsize=None, currsize=0))
Exemple #4
0
 def test_cache_usage(self, depth):
     """Test that the right number of cachings have been executed after clearing the cache"""
     pu.pauli_eigs.cache_clear()
     pu.pauli_eigs(depth)
     total_runs = sum([2**x for x in range(depth)])
     assert functools._CacheInfo(depth - 1, depth, 128,
                                 depth) == pu.pauli_eigs.cache_info()
Exemple #5
0
def _cache_info(wrapped, maxsize):
    return _CacheInfo(
        wrapped.hits,
        wrapped.misses,
        maxsize,
        len(wrapped._cache),
    )
Exemple #6
0
    def test_lru_with_keyword_args(self):
        @fastcache.clru_cache()
        def fib(n):
            if n < 2:
                return n
            return fib(n=n - 1) + fib(n=n - 2)

        self.assertEqual(
            [fib(n=number) for number in range(16)],
            [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610])
        self.assertEqual(
            fib.cache_info(),
            _CacheInfo(hits=28, misses=16, maxsize=128, currsize=16))
        fib.cache_clear()
        self.assertEqual(fib.cache_info(),
                         _CacheInfo(hits=0, misses=0, maxsize=128, currsize=0))
Exemple #7
0
    def decorator(func):
        t = TinyLFU(size=cache_size,
                    sample=sample_size,
                    false_positive=false_positive)

        def search(*args, **kargs):

            key = str(functools._make_key(args, kargs, True))
            if key in t:
                search.__hits += 1
                start = time.time()
                value = t.get(key)
                end = time.time()
                timeit = int(end * 1000000 - start * 1000000)
                return t.get(key)
            else:
                search.__misses += 1
                result = func(*args, **kargs)
                start = time.time()
                t.set(key, result)
                end = time.time()
                timeit = int(end * 1000000 - start * 1000000)
                return result

        search.__hits = search.__misses = 0
        search.cache_info = lambda: functools._CacheInfo(
            search.__hits, search.__misses, cache_size, len(t))
        return search
Exemple #8
0
def test_cache_usage(depth):
    """Test that the right number of cachings have been executed after clearing the cache"""
    operation_helpers.pauli_eigenvalues.cache_clear()
    operation_helpers.pauli_eigenvalues(depth)
    assert (functools._CacheInfo(
        depth - 1, depth, 128,
        depth) == operation_helpers.pauli_eigenvalues.cache_info())
Exemple #9
0
def _cache_info(wrapped, maxsize):
    # pylint: disable=protected-access
    return _CacheInfo(
        wrapped.hits,
        wrapped.misses,
        maxsize,
        len(wrapped._cache),
    )
    def test_lru_with_keyword_args_maxsize_none(self):
        class C:

            @per_instance_lru_cache(maxsize=None)
            def fib(self, n):
                if n < 2:
                    return n
                return self.fib(n=n-1) + self.fib(n=n-2)

        instance = C()

        self.assertEqual([instance.fib(n=number) for number in range(16)],
            [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610])
        self.assertEqual(instance.fib.cache_info(instance),
            functools._CacheInfo(hits=28, misses=16, maxsize=None, currsize=16))
        instance.fib.cache_clear(instance)
        self.assertEqual(instance.fib.cache_info(instance),
            functools._CacheInfo(hits=0, misses=0, maxsize=None, currsize=0))
    def test_lru_with_maxsize_negative(self):
        class C:

            @per_instance_lru_cache(maxsize=-10)
            def eq(self, n):
                return n

        instance = C()

        for _ in (0, 1):
            self.assertEqual([instance.eq(n) for n in range(150)], list(range(150)))
        self.assertEqual(C.eq.cache_info(instance),
            functools._CacheInfo(hits=0, misses=300, maxsize=-10, currsize=1))
    def test_kwargs_order(self):
        # PEP 468: Preserving Keyword Argument Order
        class C:

            @per_instance_lru_cache(maxsize=10)
            def f(self, **kwargs):
                return list(kwargs.items())

        instance = C()

        self.assertEqual(instance.f(a=1, b=2), [('a', 1), ('b', 2)])
        self.assertEqual(instance.f(b=2, a=1), [('b', 2), ('a', 1)])
        self.assertEqual(C.f.cache_info(instance),
            functools._CacheInfo(hits=0, misses=2, maxsize=10, currsize=2))
Exemple #13
0
 def cache_info(instance):
     with lock:
         instance_wrapper = get_instance_wrapper(id(instance))
         if instance_wrapper is not None:
             return instance_wrapper.cache_info()
         return functools._CacheInfo(0, 0, maxsize, 0)
Exemple #14
0
def test_get_pauli_eigenvalues_cache_usage(depth):
    """Test that the right number of cachings have been executed after clearing the cache"""
    get_pauli_eigenvalues.cache_clear()
    get_pauli_eigenvalues(depth)
    assert functools._CacheInfo(depth - 1, depth, 128,
                                depth) == get_pauli_eigenvalues.cache_info()
Exemple #15
0
 def cache_info():
     """Report cache statistics"""
     return functools._CacheInfo(hits, misses, None, cache_len())
Exemple #16
0
 def cache_info():
     """Report cache statistics"""
     with lock:
         return _CacheInfo(stat[HITS], stat[MISSES], maxsize,
                           cache_len())
Exemple #17
0
 def cache_info(instance):
     with lock:
         instance_wrapper = get_instance_wrapper(id(instance))
         if instance_wrapper is not None:
             return instance_wrapper.cache_info()
         return functools._CacheInfo(0, 0, maxsize, 0)
 def cache_info():
     """Report cache statistics"""
     with lock:
         return _CacheInfo(hits, misses, maxsize, len(cache))