Проверка выделения памяти с помощью guppy.hpy дает неожиданный результат
Я пытаюсь использовать декоратор (используя guppy.hpy) для вычисления вычислений в памяти, как показано в коде ниже. Но вы, когда он используется в первый раз, он дает правильный результат, но во второй раз, когда я вызываю ту же функцию, выделение памяти больше, может кто-нибудь помочь, пожалуйста.
#!/usr/bin/python
import itertools
from guppy import hpy
def Memory_check(f):
def wrap(*args,**kwargs):
hp = hpy()
start=hp.heap()
ret=f(*args,**kwargs)
end=hp.heap()
used=end-start
print("{} took {}".format(f.__name__,used[0]))
return ret
return wrap
@Memory_check
def func1(stra):
return [''.join(x) for x in itertools.permutations(stra)]
@Memory_check
def func2(stra):
return [''.join(x) for x in itertools.permutations(stra)]
ret=func1('0123')
ret1=func2('0123')
Результат
**func1** took Partition of a set of 6 objects. **Total size = 1680 bytes.**
Index Count % Size % Cumulative % Kind (class / dict of class)
0 6 100 1680 100 1680 100 dict (no owner)
**func2** took Partition of a set of 93 objects. **Total size = 37560 bytes.**
Index Count % Size % Cumulative % Kind (class / dict of class)
0 93 100 37560 100 37560 100 dict (no owner)