QGIS/python/core/additions/runtimeprofiler.py
Nyall Dawson 82c298a703 Show startup profile timings in developer/debugging tools panel
Instead of hiding this information on the console, let's expose it
to users. QGIS startup times have been an ongoing issue for a number
of years, so let's help provide users with some tools to help
track down what's causing these (*hint* it's probably a plugin *hint*)
2020-05-19 04:35:34 +10:00

47 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
"""
***************************************************************************
runtimeprofiler.py
---------------------
Date : May 2020
Copyright : (C) 2020 by Nyall Dawson
Email : nyall dot dawson at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""
from qgis._core import QgsScopedRuntimeProfile
class ScopedRuntimeProfileContextManager():
"""
Context manager used to profile blocks of code in the QgsApplication.profiler() registry.
.. code-block:: python
with QgsRuntimeProfiler.profile('My operation'):
# do something
.. versionadded:: 3.14
"""
def __init__(self, operation):
self.operation = operation
self.profiler = None
def __enter__(self):
self.profiler = QgsScopedRuntimeProfile(self.operation)
return self.operation
def __exit__(self, ex_type, ex_value, traceback):
del self.profiler
return True