Description
Bug report
Bug description:
Starting in 3.12 with the addition of sys.monitoring
, _lsprof
, specifically in profiler_enable
, no longer calls _PyEval_SetProfile
.
Very specifically, this impacts previous functionality where python -m cProfile -m whatever
would result in sys.setprofile()
being called, and subsequently the whatever
module could access the profiler object via sys.getprofile()
To my knowledge this is now completely impossible as sys.monitoring
provides no meaningful way to access the profiler object.
In my particular use case, profiling could be enabled within the application, or if python -m cProfile
was used, the existing profiler could be used allowing profiling to happen earlier than the enablement point of cProfile
within the application.
Something to the effect of:
p = sys.getprofile()
if p is None:
p = cProfile.Profile()
p.enable()
CPython versions tested on:
3.13
Operating systems tested on:
Linux