Я думаю, вы ищете профилировщик Python;
у вас есть куча из них, которые вы можете использовать, например, профиль Heapy , или cprofile , Pysize ...
пример использования Heapy:
Вы должны включить этот фрагмент где-нибудь в свой код:
from guppy import hpy
h = hpy()
print h.heap()
и он выдаст вам вывод:
Partition of a set of 132527 objects. Total size = 8301532 bytes.
Index Count % Size % Cumulative % Kind (class / dict of class)
0 35144 27 2140412 26 2140412 26 str
1 38397 29 1309020 16 3449432 42 tuple
2 530 0 739856 9 4189288 50 dict (no owner)
пример с cprofile:
вы можете запустить его так:
python -m cProfile script.py
Выход:
5 function calls in 0.000 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 myscript.py:1(<module>)
1 0.000 0.000 0.000 0.000 {execfile}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1 0.000 0.000 0.000 0.000 {range}
Вы также можете использовать модуль gc , чтобы узнать, почему python не освобождает вашу память, и попросить его освободить память с помощью gc.collect () .
Кстати, вы смотрели на numpy , я думаю, что это более удобно, если вы делаете тяжелые вычисления, как вы сказали.