Для получения быстрой статистики профиля на ноутбуке 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) раз.
- Выводит подробности о системном кешировании:
- Когда фрагменты кода выполняются несколько раз, система кэширует несколько операций и не выполняет их снова, что может снизить точность отчетов профиля.
% prun
%prun -s cumulative 'Code to profile'
дает:
- количество вызовов функций (ncalls)
- имеет записи для каждого вызова функции (разные)
- время, затрачиваемое на звонок (percall)
- время, прошедшее до вызова этой функции (cumtime)
- название func / module называется etc ...
% 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 размеров рекурсивно
трекер от пимплера
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