Для быстрого получения статистики профиля на ноутбуке IPython. Можно встроить line_profiler и memory_profiler прямо в свои записные книжки.
Еще один полезный пакет - Pympler. Это мощный пакет профилирования, способный отслеживать классы, объекты, функции, утечки памяти и т. Д. Примеры ниже, документы прилагаются.
Возьми!
!pip install line_profiler
!pip install memory_profiler
!pip install pympler
Загрузите это!
%load_ext line_profiler
%load_ext memory_profiler
Используй это!
%время
%time print('Outputs CPU time,Wall Clock time')
#CPU times: user 2 µs, sys: 0 ns, total: 2 µs Wall time: 5.96 µs
Дает:
- Время ЦП: время выполнения на уровне ЦП
- sys times: время выполнения на системном уровне
- итого: время процессора + системное время
- Время на стене: Время настенных часов
% timeit
%timeit -r 7 -n 1000 print('Outputs execution time of the snippet')
#1000 loops, best of 7: 7.46 ns per loop
- Выдает лучшее время из заданного количества прогонов (r) в цикле (n) раз.
- Outputs details on system caching:
- When code snippets are executed multiple times, system caches a few opearations and doesn't execute them again that may hamper the accuracy of the profile reports.
% обрезка
%prun -s cumulative 'Code to profile'
Дает:
- количество вызовов функций (ncalls)
- имеет записи на вызов функции (отдельные)
- время, затраченное на звонок (percall)
- время, прошедшее до вызова этой функции (cumtime)
- имя вызываемой функции / модуля и т. д.

% memit
%memit 'Code to profile'
#peak memory: 199.45 MiB, increment: 0.00 MiB
Дает:
% lprun
#Example function
def fun():
for i in range(10):
print(i)
#Usage: %lprun <name_of_the_function> function
%lprun -f fun fun()
Дает:

sys.getsizeof
sys.getsizeof('code to profile')
# 64 bytes
Возвращает размер объекта в байтах.
asizeof () от pympler
from pympler import asizeof
obj = [1,2,("hey","ha"),3]
print(asizeof.asizeof(obj,stats=4))
pympler.asizeof можно использовать для исследования того, сколько памяти потребляют определенные объекты Python. В отличие от sys.getsizeof, asizeof рекурсивно изменяет размер объектов.

трекер от pympler
from pympler import tracker
tr = tracker.SummaryTracker()
def fun():
li = [1,2,3]
di = {"ha":"haha","duh":"Umm"}
fun()
tr.print_diff()
Отслеживает время жизни функции.

Пакет Pympler состоит из огромного количества полезных функций для профилирования кода. Все это не может быть здесь описано. См. Прилагаемую документацию для подробных реализаций профилей.
Pympler doc
person
Aditya Patnaik
schedule
25.05.2020
py-spy(профилировщик выборки) заслуживает отдельного ответа. - person jfs   schedule 18.06.2021