Profilers controllable via PYQTGRAPHPROFILE.
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.
Showing with 203 additions and 214 deletions