gh-135953: Implement sampling tool under profile.sample by lkollar · Pull Request #135998 · python/cpython · GitHub | Latest TMZ Celebrity News & Gossip | Watch TMZ Live
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 6 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 4 times, most recently from 0828aa3 to 57e3152 Compare June 27, 2025 20:09
@lkollar lkollar changed the title gh-135953: Implement sampling tool under profile.sample gh-135953: Implement sampling tool under profile.sample Jul 3, 2025
if options.outfile is not None:
options.outfile = os.path.abspath(options.outfile)

if len(args) > 0 or options.pid:
Copy link
Member

@pablogsal pablogsal Jul 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why we need options.pid here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good spot. That was leftover from an earlier iteration. Removed.

lkollar added 5 commits July 3, 2025 21:35
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 a019e6a to a0be753 Compare July 3, 2025 21:09
@lkollar lkollar force-pushed the sampling-profiler branch from a0be753 to aeca768 Compare July 3, 2025 21:58
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.

2 participants

TMZ Celebrity News – Breaking Stories, Videos & Gossip

Looking for the latest TMZ celebrity news? You've come to the right place. From shocking Hollywood scandals to exclusive videos, TMZ delivers it all in real time.

Whether it’s a red carpet slip-up, a viral paparazzi moment, or a legal drama involving your favorite stars, TMZ news is always first to break the story. Stay in the loop with daily updates, insider tips, and jaw-dropping photos.

🎥 Watch TMZ Live

TMZ Live brings you daily celebrity news and interviews straight from the TMZ newsroom. Don’t miss a beat—watch now and see what’s trending in Hollywood.