Проверка выделения памяти с помощью 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)

0 ответов

Другие вопросы по тегам