Para obter estatísticas rápidas do perfil em um notebook IPython. Pode-se incorporar line_profiler e memory_profiler em linha reta em seus notebooks.
Outro pacote útil é o Pympler . É um poderoso pacote de criação de perfil capaz de rastrear classes, objetos, funções, vazamentos de memória etc. Exemplos abaixo, documentos anexados.
Pegue!
!pip install line_profiler
!pip install memory_profiler
!pip install pympler
Carregue-o!
%load_ext line_profiler
%load_ext memory_profiler
Use-o!
%Tempo
%time print('Outputs CPU time,Wall Clock time')
#CPU times: user 2 µs, sys: 0 ns, total: 2 µs Wall time: 5.96 µs
Dá:
- Tempos de CPU: tempo de execução no nível da CPU
- sys times: tempo de execução no nível do sistema
- total: tempo da CPU + hora do sistema
- Wall time: Relógio de parede
% timeit
%timeit -r 7 -n 1000 print('Outputs execution time of the snippet')
#1000 loops, best of 7: 7.46 ns per loop
- Dá o melhor tempo para determinado número de execuções (r) em loop (n) vezes.
- Mostra detalhes sobre o cache do sistema:
- Quando trechos de código são executados várias vezes, o sistema armazena em cache algumas operações e não as executa novamente, o que pode prejudicar a precisão dos relatórios de perfil.
% de poda
%prun -s cumulative 'Code to profile'
Dá:
- número de chamadas de função (ncalls)
- possui entradas por chamada de função (distintas)
- tempo gasto por chamada (percall)
- tempo decorrido até a chamada de função (cumtime)
- nome do func / module chamado etc ...
% memit
%memit 'Code to profile'
#peak memory: 199.45 MiB, increment: 0.00 MiB
Dá:
% lprun
#Example function
def fun():
for i in range(10):
print(i)
#Usage: %lprun <name_of_the_function> function
%lprun -f fun fun()
Dá:
sys.getsizeof
sys.getsizeof('code to profile')
# 64 bytes
Retorna o tamanho de um objeto em bytes.
asizeof () do pympler
from pympler import asizeof
obj = [1,2,("hey","ha"),3]
print(asizeof.asizeof(obj,stats=4))
pympler.asizeof pode ser usado para investigar quanta memória determinados objetos Python consomem. Em contraste com sys.getsizeof, um tamanho de objetos recursivamente
rastreador do pympler
from pympler import tracker
tr = tracker.SummaryTracker()
def fun():
li = [1,2,3]
di = {"ha":"haha","duh":"Umm"}
fun()
tr.print_diff()
Rastreia a vida útil de uma função.
O pacote Pympler consiste em um grande número de funções de alta utilidade para codificar o perfil. Tudo isso não pode ser coberto aqui. Consulte a documentação anexada para implementações de perfil detalhado.
Pympler doc