Repolode
joerick

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. 1

    Instalar pyinstrument pelo PyPI

    pip install pyinstrument
  2. 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