Ferramenta de linha de comando e web para visualizar e analisar dados de profiling no formato profile.proto.
joerick/pyinstrument
Profiler de pilha de chamadas para Python que mostra onde seu código gasta tempo, com saídas no console, em HTML e em outros formatos.
- Estrelas
- 8,026
- Forks
- 302
- Issues abertas
- 32
- Último commit
- há 6 dias
O que é?
Pyinstrument é um profiler estatístico para Python. Ele amostra a pilha de chamadas enquanto o programa está em execução e, depois, mostra quais funções respondem pela maior parte do tempo decorrido, para você concentrar os esforços de otimização nos trechos mais lentos do código.
Ele oferece um modo de linha de comando (`pyinstrument script.py`), uma API Python com um bloco `with` ou um decorator para analisar um trecho específico de código e renderizadores para texto no console, HTML interativo, JSON, arquivos pstats e speedscope. Também oferece suporte a código assíncrono, mostrando o tempo gasto em `await` dentro de coroutines, e inclui integrações com Django middleware, magics do IPython/Jupyter e exemplos com FastAPI e aiohttp.
Por padrão, ele oculta frames de código de bibliotecas e destaca o código da sua aplicação, mantendo a saída focada nas partes que você controla.
Recursos principais
- 01Amostra a pilha de chamadas com baixo overhead e informa o tempo por função.
- 02Formatos de saída para console, HTML interativo, JSON, pstats e speedscope.
- 03Profiling com suporte a código assíncrono, que atribui corretamente o tempo gasto em `await`.
- 04Analise um script inteiro pela linha de comando ou um bloco específico com uma instrução `with` ou um decorator.
- 05Integrações com Django middleware e comandos magic do IPython/Jupyter.
- 06Oculta frames de bibliotecas por padrão para destacar o código da aplicação.
Casos de uso
- Encontrar a função lenta por trás de um script Python que demora para executar.
- Analisar uma view ou middleware do Django para descobrir onde o tempo das requisições é gasto.
- Diagnosticar código assíncrono lento em que tarefas passam tempo aguardando I/O.
- Inspecionar diretamente no Jupyter o desempenho de uma célula de notebook.
Início rápido
- 1
Instalar pyinstrument pelo PyPI
pip install pyinstrument - 2
Criar o perfil de um script pela linha de comando
pyinstrument script.py
Antes de usar
- O README informa que a criação de perfis dentro de contêineres Docker pode gerar resultados estranhos devido à lentidão das chamadas de sistema relacionadas à medição de tempo.
- Classes serializadas com pickle em scripts executados com pyinstrument podem causar erros de serialização de `__main__`.
Em coleções
Tópicos
Perguntas frequentes
- O que é pyinstrument?
- Profiler de pilha de chamadas para Python que mostra onde seu código gasta tempo, com saídas no console, em HTML e em outros formatos. Pyinstrument é um profiler estatístico para Python. Ele amostra a pilha de chamadas enquanto o programa está em execução e, depois, mostra quais funções respondem pela maior parte do tempo decorrido, para você concentrar os esforços de otimização nos trechos mais lentos do código.
- pyinstrument é gratuito? Qual é a licença?
- pyinstrument é open source sob a licença BSD-3-Clause. Confira os termos da licença antes de usá-lo em produtos comerciais.
- pyinstrument ainda é mantido?
- Manutenção ativa. O último commit de pyinstrument foi em 1 de nov. de 2026.
- Para que posso usar pyinstrument?
- Encontrar a função lenta por trás de um script Python que demora para executar. Analisar uma view ou middleware do Django para descobrir onde o tempo das requisições é gasto. Diagnosticar código assíncrono lento em que tarefas passam tempo aguardando I/O. Inspecionar diretamente no Jupyter o desempenho de uma célula de notebook.
- Como instalar pyinstrument?
- Instalar pyinstrument pelo PyPI: pip install pyinstrument Criar o perfil de um script pela linha de comando: pyinstrument script.py
- Onde consigo pyinstrument?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/joerick/pyinstrument
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Profiler em tempo real e interface de inspeção para Django que registra requisições, consultas SQL e blocos de código para ajudar a encontrar gargalos.
Profiler para Linux que usa Intel Processor Trace para registrar todas as chamadas de função de um processo e exibi-las em uma linha do tempo interativa.
Profiler por amostragem para programas Python, que se conecta a processos em execução sem modificar o código nem reiniciá-los.
Um pacote Laravel que integra o PHP Debug Bar e adiciona uma barra de desenvolvimento com queries, rotas, views, eventos, logs e muito mais.
Uma extensão para Flask que monitora automaticamente o desempenho dos endpoints, perfila requisições e detecta outliers e exceções em um dashboard integrado.