Skip to content
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

Support Yappi for profiling panel #1992

Open
tim-schilling opened this issue Aug 20, 2024 · 2 comments
Open

Support Yappi for profiling panel #1992

tim-schilling opened this issue Aug 20, 2024 · 2 comments

Comments

@tim-schilling
Copy link
Member

tim-schilling commented Aug 20, 2024

The current Profiling panel can't support async applications (#1875). However, the yappi project does https://github.com/sumerc/yappi

It's been around for >5 years, it's the default profiler for PyCharm and it supports multi-threaded applications.

We could make this an optional dependency of the toolbar and could try to automatically utilize it if we're in async context. I haven't thought it entirely through, but I wanted to highlight there are async profiling options available to us. And since profiling is disabled by default, I'd be okay with adding an optional dependency to support it.

@salty-ivy
Copy link
Member

Since DebugToolbar currently use pstats to represent process profiling data, there’s a compatibility concern. Yappi doesn’t support pstats and instead uses its own format, ystats (reference: Yappi implementation).

@tim-schilling
Copy link
Member Author

@salty-ivy sorry for the late response. There are two options here:

  1. Switch to Yappi entirely
  2. Create a wrapper around ystats and pstats for what we need and use that

Switching to Yappi may be easier. However, 2 may create some portability in the future if another person would like to create a third-party panel that uses a different profiling library.

What are your thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants