Skip to content
  • Antony Lee's avatar
    Profilers controllable via PYQTGRAPHPROFILE. · f136b330
    Antony Lee authored
    A new function profiling system is implemented.  Most importantly, this
    allows one to profile various internal functions directly by setting the
    `PYQTGRAPHPROFILE` environment variable to a comma separated list of
    function and method names, e.g.
    
        PYQTGRAPHPROFILE=functions.makeARGB,ImageItem.render \
            python -mexamples
    
    Specifically, items in `PYQTGRAPHPROFILE` must be of the form
    `classname.methodname` or `dotted_module_name.functionname`, with the
    initial "pyqtgraph." stripped from the dotted module name.
    
    Moreover, the overhead of inactive profilers has been kept minimal: an
    introspective check of the caller's name (only if `PYQTGRAPHPROFILE` is
    set) and a trivial function (not method) call per profiler call.
    
    The new profilers rely on `sys._getframe` to find the caller's name,
    although the previous system (passing the caller's name explicitely)
    could certainly have been kept instead.
    
    Finally the API of profilers has been changed: register a
    profiling point simply by calling the profiler, and profilers are
    automatically flushed on garbage collection.  See the docstring of
    `pyqtgraph.debug.Profiler` for more details.
    f136b330