Я хочу рассчитать потребление памяти приложением в модульном тесте в python3. Я попытался использовать модуль tracemallo c в простом модульном тесте, чтобы получить необходимую информацию. Но я не знаю, как получить имя класса, например memory_profile.test_memory_profile.TstClass
данного объекта. Кто-нибудь может помочь, как получить имя класса объекта из снимка? У кого-нибудь есть другое решение?
class TstClass(object):
def __init__(self):
self.value = 100
class TestMemUsage(unittest.TestCase):
def test_tracemalloc_single_object(self):
tracemalloc.start(5)
snapshot1 = tracemalloc.take_snapshot()
obj = TstClass()
snapshot2 = tracemalloc.take_snapshot()
stats = snapshot2.compare_to(snapshot1, 'lineno')
stat = stats[2] # Allocation of ExampleClass()
print(stat)
for line in stat.traceback.format(): # Traceback
print(line)
file_path, line_nr = stat.traceback._frames[0]
print('obj={}'.format(obj))
print('file_path={}'.format(file_path))
print('line_nr={}'.format(line_nr))
print('size_diff={}'.format(stat.size_diff))
print('count_diff={}'.format(stat.count_diff))
# How to get the class name of the object here ?
# e.g. memory_profile.test_memory_profile.TstClass
Вывод теста:
D:\Projekte\python\python_examples\memory_profile\test_stack_overflow.py:18: size=356 B (+356 B), count=2 (+2), average=178 B
File "D:\Projekte\python\python_examples\memory_profile\test_stack_overflow.py", line 18
obj = TstClass()
obj=<memory_profile.test_stack_overflow.TstClass object at 0x03F38A18>
file_path=D:\Projekte\python\python_examples\memory_profile\test_stack_overflow.py
line_nr=18
size_diff=356
count_diff=2