New submission from Gabriele N Tornetta <phoenix1...@gmail.com>:

When dumping profiling data out of code objects using out-of-process tools like 
Austin (https://github.com/p403n1x87/austin) one has access only to file name, 
function name, and line number. Consider the flame graph generated by running 
the following script, and aggregating on function names

----
class Foo:
    def on_cpu(self, n):
        a = []
        for i in range(n):
            a.append(i)


class Bar:
    def on_cpu(self, n):
        a = []
        for i in range(n):
            a.append(i)


if __name__ == "__main__":
    f = Foo()
    b = Bar()

    f.on_cpu(1_000_000)
    b.on_cpu(5_000_000)
----

Without the extra information coming from the actual Python source, one would 
not be able to tell, by looking at the flame graph alone, that on_cpu has 
contributions from two different methods. By propagating the qualname 
information from the compiler to code objects, such names would be 
disambiguated and the resulting flame graph would be clearer.

I would like to propose adding the co_qualname field to the PyCodeObject 
structure, which is to be set to NULL except for when the code object is 
created by the compiler in compile.c.

----------
components: C API
files: py_main.png
messages: 396667
nosy: Gabriele Tornetta
priority: normal
severity: normal
status: open
title: Propagate qualname from the compiler unit to code objects for finer 
grained profiling data
type: enhancement
versions: Python 3.11
Added file: https://bugs.python.org/file50128/py_main.png

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue44530>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to