Crate py_spy

Source
Expand description

py-spy: a sampling profiler for python programs

This crate lets you use py-spy as a rust library, and gather stack traces from your python process programmatically.

§Example:

fn print_python_stacks(pid: py_spy::Pid) -> Result<(), anyhow::Error> {
    // Create a new PythonSpy object with the default config options
    let config = py_spy::Config::default();
    let mut process = py_spy::PythonSpy::new(pid, &config)?;

    // get stack traces for each thread in the process
    let traces = process.get_stack_traces()?;

    // Print out the python stack for each thread
    for trace in traces {
        println!("Thread {:#X} ({})", trace.thread_id, trace.status_str());
        for frame in &trace.frames {
            println!("\t {} ({}:{})", frame.name, frame.filename, frame.line);
        }
    }
    Ok(())
}

Re-exports§

pub use config::Config;
pub use python_spy::PythonSpy;
pub use stack_trace::Frame;
pub use stack_trace::StackTrace;

Modules§

binary_parser
config
coredump
dump
python_process_info
python_spy
sampler
stack_trace
timer

Type Aliases§

Pid