pyflame

? Pyflame: A Ptracing Profiler For Python

Github星跟蹤圖

Pyflame: A Ptracing Profiler For Python

Build Status Docs Status COPR Status

(This project is deprecated and not maintained.)

Pyflame is a high performance profiling tool that
generates flame graphs for
Python. Pyflame is implemented in C++, and uses the
Linux ptrace(2) system
call to collect profiling information. It can take snapshots of the Python call
stack without explicit instrumentation, meaning you can profile a program
without modifying its source code. Pyflame is capable of profiling embedded
Python interpreters like uWSGI.
It fully supports profiling multi-threaded Python programs.

Pyflame usually introduces significantly less overhead than the builtin
profile (or cProfile) modules, and emits richer profiling data. The
profiling overhead is low enough that you can use it to profile live processes
in production.

Full Documentation: https://pyflame.readthedocs.io

pyflame

Quickstart

Building And Installing

For Debian/Ubuntu, install the following:

# Install build dependencies on Debian or Ubuntu.
sudo apt-get install autoconf automake autotools-dev g++ pkg-config python-dev python3-dev libtool make

Once you have the build dependencies installed:

./autogen.sh
./configure
make

The make command will produce an executable at src/pyflame that you can run
and use.

Optionally, if you have virtualenv installed, you can test the executable you
produced using make check.

Using Pyflame

The full documentation for using Pyflame
is here. But
here's a quick guide:

# Attach to PID 12345 and profile it for 1 second
pyflame -p 12345

# Attach to PID 768 and profile it for 5 seconds, sampling every 0.01 seconds
pyflame -s 5 -r 0.01 -p 768

# Run py.test against tests/, emitting sample data to prof.txt
pyflame -o prof.txt -t py.test tests/

In all of these cases you will get flame graph data on stdout (or to a file if
you used -o). This data is in the format expected by flamegraph.pl, which
you can find here.

FAQ

The full FAQ is here.

What's The Deal With (idle) Time?

Full
answer
here.
tl;dr: use the -x flag to suppress (idle) output.

What About These Ptrace Errors?

See here.

How Do I Profile Threaded Applications?

Use the --threads option.

Is There A Way To Just Dump Stack Traces?

Yes, use the -d option.

主要指標

概覽
名稱與所有者uber-archive/pyflame
主編程語言C++
編程語言Makefile (語言數: 6)
平台
許可證Apache License 2.0
所有者活动
創建於2016-08-09 18:35:37
推送於2019-12-03 07:08:22
最后一次提交2019-12-02 23:08:22
發布數30
最新版本名稱v1.6.7 (發布於 )
第一版名稱v1.0 (發布於 )
用户参与
星數3k
關注者數65
派生數241
提交數299
已啟用問題?
問題數77
打開的問題數24
拉請求數76
打開的拉請求數11
關閉的拉請求數15
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?