Memray é um perfilador de memória de código aberto desenvolvido pela Bloomberg. É de código aberto há mais de um mês e já recebeu mais de 8,4 mil estrelas, o que o torna um verdadeiro projeto estrela. Hoje recomendaremos esta ferramenta de análise de memória Python para todos.
Memray pode rastrear alocações de memória em código Python, módulos de extensão nativos e no próprio interpretador Python. Ele pode gerar muitos tipos diferentes de relatórios para ajudá-lo a analisar o uso de memória do código Python.
-
Principais características da ferramenta:
-
Rastreie cada chamada de função e rastreie com precisão a pilha de chamadas
-
Pode rastrear chamadas da biblioteca c/c++
-
A análise é muito rápida
-
Colete dados de memória e gere vários ícones
-
Usando threads python
-
Trabalhe com threads nativos
-
Problemas que podem ajudar a resolver:
-
Analise as alocações de memória em aplicativos para descobrir as causas do alto uso de memória
-
Encontre a causa do vazamento de memória
-
Encontre pontos de acesso de código que causam alocações pesadas de memória
►►► instalação do memray
-
Requisitos ambientais: python3.7+ ou superior, sistema Linux (suporta apenas sistema Linux)
-
Instalação: pip3 instalar memray
►►► uso de memray
ajuda sobre uso do memray
python3 -m memray --help
parâmetro |
efeito |
correr |
Execute o aplicativo especificado e monitore o uso de memória |
flamegráfico |
No relatório HTML, use o gráfico em degradê para exibir o uso de memória |
mesa |
No arquivo de relatório HTML, exiba a situação da análise de memória em uma tabela |
ao vivo |
Use a exibição da tela em tempo real para exibir vários usos de memória |
árvore |
No terminal, exiba o uso de memória em uma estrutura de árvore |
analisar |
Use o modo de depuração para exibir o uso de memória de cada linha |
resumo |
Resuma o perfil de uso de memória durante a operação do terminal |
Estatísticas |
Exibir o uso de memória no terminal detalhadamente |
►►► executar uso do comando
-
python3 -m memray run --help obter ajuda
parâmetro |
efeito |
-oOUTPU,--saída SAÍDA |
Especifique onde gerar os resultados |
--ao vivo |
Iniciar o modo de sessão de rastreamento ao vivo |
--live-remote |
Inicie uma sessão de rastreamento ao vivo e espere o cliente se conectar |
--live-port LIVE_PORT, -p LIVE_PORT |
A porta a ser usada ao iniciar o rastreamento em tempo real |
--nativo |
Rastreando a pilha C/C++ |
--follow-fork |
Rastrear alocações em processos filhos bifurcados por um script |
--trace-python-allocadores |
Registre a alocação do alocador pymalloc |
-q, --quieto |
Não exibe nenhuma saída específica de rastreamento durante a execução |
-f, --força |
Recompra forçada de arquivos existentes |
--comprimir ao sair |
Use lz4 para compactar o arquivo gerado após a conclusão do rastreamento |
--no-compress |
Arquivos gerados sem compactação lz4 |
-c |
programa passado como uma string |
-m |
Execute módulos de biblioteca como scripts |
-
python3 -m memray run xxx.py analisa diretamente o uso de memória de um determinado arquivo py, e um arquivo de registro de uso de memória de 'memray-py file name.process id.bin' será gerado no caminho atual. Claro, você também pode seguir -o outFiPath para especificar o caminho de saída. Se o arquivo py que está sendo executado for um código de módulo, você também poderá usar o modo -m xxx.py para executá-lo.
O arquivo 'memray-py filename.processid.bin' pode ser convertido em um relatório gráfico html-flame por python3 -m memray flamegraph memray-pyfilename.processid.bin
Conforme mostrado na figura acima, de cima para baixo, mostra o processo de chamada do programa. A largura representa quanta memória a função ocupa.
-
python3 -m memray run --native xxxx.py rastreará e analisará a memória consumida chamando as funções C/C++ subjacentes no código python
-
python3 -m memray run --trace-python-allocators xxx.py rastreia e analisa o alocador de memória do programa python pymalloc
Isto parece ter o mesmo efeito sem adicionar parâmetros, mas na verdade é completamente diferente. Este método rastreará profundamente a alocação de memória. Existem quatro alocadores de memória comuns em Python (malloc, free, realloc, pymalloc). Este parâmetro é muito útil quando Python tem um estouro de memória. Porém, com este parâmetro adicionado, a velocidade de transporte será mais lenta e os arquivos gerados pelos dados coletados serão maiores.
-
python3 -m memray run --live xxx.py exibe dados de memória rastreados no modo de tela ao vivo.
Por padrão, os dados na memória total são organizados de grande para pequeno; pressione "O" para classificar e exibir os objetos de memória de acordo com a memória privada, de grande para pequeno; pressione "A" para classificar os objetos de memória de acordo com o número de memória alocações de maior para menor.
Com esses dados estatísticos, você pode localizar rapidamente quais objetos ocupam uma grande quantidade de memória e quais objetos recebem memória alocada com frequência. Esses objetos são os principais objetos de análise.
comando flamegraph --- gerar relatório de gráfico de chama
-
python3 -m memray flamegraph --help Obtenha ajuda
-
python3 -m memray flamegraph xxx.bin gera gráfico em degradê
comando de tabela - gerar relatório de tabela
-
python3 -m tabela memray --help Obtenha ajuda
-
python3 -m memray table xxxx.bin converte o arquivo bin em um relatório de tabela
comando tree - gerar relatório de árvore
-
python3 -m memray tree --help Obtenha ajuda
-
python3 -m memray tree xxxx.bin converte o arquivo bin em um relatório de árvore
comando de resumo - gera relatório de resumo
-
python3 -m resumo do memray --help Obtenha ajuda
-
python3 -m memray summary xxxx.bin analisa o arquivo bin e gera um relatório resumido
comando stats --- gerar relatórios estatísticos detalhados
-
python3 -m memray stats --help Obtenha ajuda
-
python3 -m memray stats xxxx.bin analisa o arquivo bin e gera um relatório detalhado
Finalmente: O vídeo tutorial completo de teste de software abaixo foi compilado e carregado. Amigos que precisarem podem obtê-lo sozinhos [garantido 100% gratuito]
Documento de entrevista de teste de software
Devemos estudar para encontrar um emprego bem remunerado. As perguntas da entrevista a seguir são os materiais de entrevista mais recentes de empresas de Internet de primeira linha, como Alibaba, Tencent, Byte, etc., e alguns chefes da Byte deram respostas confiáveis. Depois de terminar este conjunto Acredito que todos podem encontrar um emprego satisfatório com base nas informações da entrevista.