Пример #1
0
        def func_wrapper(func):

            cfunc = fastcache.clru_cache(maxsize,
                                         typed=True,
                                         unhashable='ignore')(func)
            CACHE.append(cfunc)
            return cfunc
Пример #2
0
    def cache_wrapper(func):
        from fastcache import clru_cache
        cached_func = clru_cache(maxsize, typed, state, unhashable)(func)

        def inner(*args, **kwargs):
            if not o.has_refreshed and is_expired():
                cached_func.cache_clear()
                o.has_refreshed = True

            return cached_func(*args, **kwargs)

        return inner
Пример #3
0
    def test_lru(self):
        def orig(x, y):
            return 3 * x + y

        f = fastcache.clru_cache(maxsize=20)(orig)
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(maxsize, 20)
        self.assertEqual(currsize, 0)
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 0)

        domain = range(5)
        for i in range(1000):
            x, y = choice(domain), choice(domain)
            actual = f(x, y)
            expected = orig(x, y)
            self.assertEqual(actual, expected)
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertTrue(hits > misses)
        self.assertEqual(hits + misses, 1000)
        self.assertEqual(currsize, 20)

        f.cache_clear()  # test clearing
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 0)
        self.assertEqual(currsize, 0)
        f(x, y)
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 1)
        self.assertEqual(currsize, 1)

        # Test bypassing the cache
        if hasattr(self, 'assertIs'):
            self.assertIs(f.__wrapped__, orig)
        f.__wrapped__(x, y)
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 1)
        self.assertEqual(currsize, 1)

        # test size zero (which means "never-cache")
        @fastcache.clru_cache(0)
        def f():
            #nonlocal f_cnt
            f_cnt[0] += 1
            return 20

        self.assertEqual(f.cache_info().maxsize, 0)
        f_cnt = [0]
        for i in range(5):
            self.assertEqual(f(), 20)
        self.assertEqual(f_cnt, [5])
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 5)
        self.assertEqual(currsize, 0)

        # test size one
        @fastcache.clru_cache(1)
        def f():
            #nonlocal f_cnt
            f_cnt[0] += 1
            return 20

        self.assertEqual(f.cache_info().maxsize, 1)
        f_cnt[0] = 0
        for i in range(5):
            self.assertEqual(f(), 20)
        self.assertEqual(f_cnt, [1])
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 4)
        self.assertEqual(misses, 1)
        self.assertEqual(currsize, 1)

        # test size two
        @fastcache.clru_cache(2)
        def f(x):
            #nonlocal f_cnt
            f_cnt[0] += 1
            return x * 10

        self.assertEqual(f.cache_info().maxsize, 2)
        f_cnt[0] = 0
        for x in 7, 9, 7, 9, 7, 9, 8, 8, 8, 9, 9, 9, 8, 8, 8, 7:
            #    *  *              *                          *
            self.assertEqual(f(x), x * 10)
        self.assertEqual(f_cnt, [4])
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 12)
        self.assertEqual(misses, 4)
        self.assertEqual(currsize, 2)
Пример #4
0
Файл: util.py Проект: xysun/jax
def cache(max_size=4096):
  return fastcache.clru_cache(maxsize=max_size)
Пример #5
0
Файл: util.py Проект: xysun/jax
      if s:
        out.append(new_lhs[0])
        new_lhs = new_lhs[1:]
      else:
        out.append(new_rhs[0])
        new_rhs = new_rhs[1:]
    assert not new_rhs
    assert not new_lhs
    return out

  return lhs, rhs, merge

def cache(max_size=4096):
  return fastcache.clru_cache(maxsize=max_size)

memoize = fastcache.clru_cache(maxsize=None)

def prod(xs):
  out = 1
  for x in xs:
    out *= x
  return out

class WrapHashably(object):
  __slots__ = ["val"]

  def __init__(self, val):
    self.val = val

  def __hash__(self):
    return id(self.val)
Пример #6
0
        def func_wrapper(func):

            cfunc = fastcache.clru_cache(maxsize, typed=True, unhashable='ignore')(func)
            CACHE.append(cfunc)
            return cfunc
Пример #7
0
    _simple_email_re,
    _word_split_re,
    escape,
    text_type,
)

import util


def _get_stringy_set(seq, charset, errors):
    if isinstance(seq, text_type):
        seq = seq.encode(charset, errors)
    return bytearray(seq)


_cached_get_stringy_set = fastcache.clru_cache()(_get_stringy_set)


def _upstream_transform(string, safe):
    rv = bytearray()

    for char in bytearray(string):
        if char in safe:
            rv.append(char)
        else:
            rv.extend(('%%%02X' % char).encode('ascii'))

    return rv


def _chunking_transform(string, safe):
Пример #8
0
if sys.version_info[:2] >= (3, 3):

    import functools
    import fastcache
    import timeit
    from itertools import count

    def _untyped(*args, **kwargs):
        pass

    def _typed(*args, **kwargs):
        pass

    _py_untyped = functools.lru_cache(maxsize=100)(_untyped)
    _c_untyped =  fastcache.clru_cache(maxsize=100)(_untyped)

    _py_typed = functools.lru_cache(maxsize=100, typed=True)(_typed)
    _c_typed =  fastcache.clru_cache(maxsize=100, typed=True)(_typed)

    def _arg_gen(min=1, max=100, repeat=3):
        for i in range(min, max):
            for r in range(repeat):
                for j, k in zip(range(i), count(i, -1)):
                    yield j, k

    def _print_speedup(results):
        print('')
        print('{:9s} {:>6s} {:>6s} {:>6s}'.format('','min', 'mean', 'max'))
        def print_stats(name,off0, off1):
            arr = [py[0]/c[0] for py, c in zip(results[off0::4],
Пример #9
0
def lru_wrap(func, cache_size=None):
    if cache_size:
        return clru_cache(maxsize=cache_size)(func)
    else:
        return func
Пример #10
0
    def test_lru(self):
        def orig(x, y):
            return 3 * x + y
        f = fastcache.clru_cache(maxsize=20)(orig)
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(maxsize, 20)
        self.assertEqual(currsize, 0)
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 0)

        domain = range(5)
        for i in range(1000):
            x, y = choice(domain), choice(domain)
            actual = f(x, y)
            expected = orig(x, y)
            self.assertEqual(actual, expected)
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertTrue(hits > misses)
        self.assertEqual(hits + misses, 1000)
        self.assertEqual(currsize, 20)

        f.cache_clear()   # test clearing
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 0)
        self.assertEqual(currsize, 0)
        f(x, y)
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 1)
        self.assertEqual(currsize, 1)

        # Test bypassing the cache
        if hasattr(self, 'assertIs'):
            self.assertIs(f.__wrapped__, orig)
        f.__wrapped__(x, y)
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 1)
        self.assertEqual(currsize, 1)

        # test size zero (which means "never-cache")
        @fastcache.clru_cache(0)
        def f():
            #nonlocal f_cnt
            f_cnt[0] += 1
            return 20
        self.assertEqual(f.cache_info().maxsize, 0)
        f_cnt = [0]
        for i in range(5):
            self.assertEqual(f(), 20)
        self.assertEqual(f_cnt, [5])
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 0)
        self.assertEqual(misses, 5)
        self.assertEqual(currsize, 0)

        # test size one
        @fastcache.clru_cache(1)
        def f():
            #nonlocal f_cnt
            f_cnt[0] += 1
            return 20
        self.assertEqual(f.cache_info().maxsize, 1)
        f_cnt[0] = 0
        for i in range(5):
            self.assertEqual(f(), 20)
        self.assertEqual(f_cnt, [1])
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 4)
        self.assertEqual(misses, 1)
        self.assertEqual(currsize, 1)

        # test size two
        @fastcache.clru_cache(2)
        def f(x):
            #nonlocal f_cnt
            f_cnt[0] += 1
            return x*10
        self.assertEqual(f.cache_info().maxsize, 2)
        f_cnt[0] = 0
        for x in 7, 9, 7, 9, 7, 9, 8, 8, 8, 9, 9, 9, 8, 8, 8, 7:
            #    *  *              *                          *
            self.assertEqual(f(x), x*10)
        self.assertEqual(f_cnt, [4])
        hits, misses, maxsize, currsize = f.cache_info()
        self.assertEqual(hits, 12)
        self.assertEqual(misses, 4)
        self.assertEqual(currsize, 2)
Пример #11
0
 def __init__(self, condition_cb_pairs, neqsys_factory, **kwargs):
     super(ConditionalNeqSys, self).__init__(**kwargs)
     self.condition_cb_pairs = condition_cb_pairs
     self.neqsys_factory = clru_cache(LRU_CACHE_SIZE)(neqsys_factory)
Пример #12
0
Файл: util.py Проект: yyht/jax
def memoize(fun, max_size=4096):
    return fastcache.clru_cache(maxsize=max_size)(fun)
Пример #13
0
if sys.version_info[:2] >= (3, 3):

    import functools
    import fastcache
    import timeit
    from itertools import count

    def _untyped(*args, **kwargs):
        pass

    def _typed(*args, **kwargs):
        pass

    _py_untyped = functools.lru_cache(maxsize=100)(_untyped)
    _c_untyped = fastcache.clru_cache(maxsize=100)(_untyped)

    _py_typed = functools.lru_cache(maxsize=100, typed=True)(_typed)
    _c_typed = fastcache.clru_cache(maxsize=100, typed=True)(_typed)

    def _arg_gen(min=1, max=100, repeat=3):
        for i in range(min, max):
            for r in range(repeat):
                for j, k in zip(range(i), count(i, -1)):
                    yield j, k

    def _print_speedup(results):
        print("")
        print("{:9s} {:>6s} {:>6s} {:>6s}".format("", "min", "mean", "max"))

        def print_stats(name, off0, off1):
Пример #14
0
 def __init__(self, condition_cb_pairs, neqsys_factory, **kwargs):
     super(ConditionalNeqSys, self).__init__(**kwargs)
     self.condition_cb_pairs = condition_cb_pairs
     self.neqsys_factory = clru_cache(LRU_CACHE_SIZE)(neqsys_factory)
Пример #15
0
    _letters,
    _punctuation_re,
    _simple_email_re,
    _word_split_re,
    escape,
    text_type,
)

import util

def _get_stringy_set(seq, charset, errors):
    if isinstance(seq, text_type):
        seq = seq.encode(charset, errors)
    return bytearray(seq)

_cached_get_stringy_set = fastcache.clru_cache()(_get_stringy_set)

def _upstream_transform(string, safe):
    rv = bytearray()

    for char in bytearray(string):
        if char in safe:
            rv.append(char)
        else:
            rv.extend(('%%%02X' % char).encode('ascii'))

    return rv

def _chunking_transform(string, safe):
    string_bytes = bytearray(string)
    safe_chars = [char in safe for char in string_bytes]
Пример #16
0
def lru_wrap(func, cache_size=None):
    if cache_size:
        return clru_cache(maxsize=cache_size)(func)
    else:
        return func