diff --git a/python/dune/perftool/generation/cache.py b/python/dune/perftool/generation/cache.py index 80849f8cf4e504851ffc142745a544ae36bd0efa..ba5e357d91f358cda2705527610013573174d1e3 100644 --- a/python/dune/perftool/generation/cache.py +++ b/python/dune/perftool/generation/cache.py @@ -46,16 +46,16 @@ def _freeze(data): raise TypeError('Cannot freeze non-hashable object {} of type {}'.format(data, type(data))) -class _NoCachingCounter(object): +class _GlobalCounter(object): counter = 0 def get(self): - _NoCachingCounter.counter = _NoCachingCounter.counter + 1 - return _NoCachingCounter.counter + _GlobalCounter.counter = _GlobalCounter.counter + 1 + return _GlobalCounter.counter def no_caching(*a, **k): - return _NoCachingCounter().get() + return _GlobalCounter().get() class _CacheItemMeta(type): @@ -66,14 +66,13 @@ class _CacheItemMeta(type): rettype = type(name, bases, d) if counted: original_on_store = on_store - setattr(rettype, '_count', 0) def add_count(x): - rettype._count = rettype._count + 1 + count = _GlobalCounter().get() if isinstance(x, tuple): - return (rettype._count, original_on_store(*x)) + return (count, original_on_store(*x)) else: - return (rettype._count, original_on_store(x)) + return (count, original_on_store(x)) on_store = add_count def _init(s, x):