Thanks to visit codestin.com
Credit goes to github.com

Skip to content

gh-135953: Implement sampling tool under profile.sample #135998

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

lkollar
Copy link
Contributor

@lkollar lkollar commented Jun 26, 2025

No description provided.

@lkollar lkollar changed the title Implement sampling tool under profile.sample gh-135953: Implement sampling tool under profile.sample Jun 26, 2025
@lkollar lkollar force-pushed the sampling-profiler branch from ca3c191 to 21a7f66 Compare June 26, 2025 19:57
lkollar added 4 commits June 26, 2025 21:49
This allows adding a new 'sample' submodule and enables invoking the
sampling profiler through 'python -m profile.sample', while retaining
backwards compatibility when using 'profile'.
Implement a statistical sampling profiler that can profile external
Python processes by PID. Uses the _remote_debugging module and converts
the results to pstats-compatible format for analysis.
This variant overrides how column headers are printed to avoid
conflating call counts with sample counts.

The SampledStats results are stored in the exact same format as Stats,
but since the results don't represent call counts but sample counts, the
column headers are different to account for this.

This ensure that using the pstats browser instantiates the right object
to handle the correct columns, add a factory function which can
instantiate the correct class. As the Stats class can only handle either
a filename or an object which provides the 'stats' attribute in a
pre-parsed format, this provides a StatsLoaderShim to avoid marshalling
the data twice (once to check the marker and once in the Stats module if
we were to pass the file name).
Implements collapsed stack trace format output for the sampling
profiler. This format represents complete call stacks as semicolon-
delimited strings with sample counts, making it compatible with
external flamegraph generation tools like flamegraph.pl.

The format uses filename:function:line notation and stores call trees
during sampling for efficient post-processing into the collapsed format.
@lkollar lkollar force-pushed the sampling-profiler branch 2 times, most recently from 0b6a3c9 to 0828aa3 Compare June 27, 2025 12:26
@lkollar lkollar force-pushed the sampling-profiler branch from 0828aa3 to 57e3152 Compare June 27, 2025 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant