<div dir="ltr"><div>Hello,</div><div><br></div><div>I'm seeking advice on how to profile python <span tabindex="-1" id=":2va.1">plugins</span> running within <span tabindex="-1" id=":2va.2">QGIS</span>.  Besides providing a useful tool to the development environment for <span tabindex="-1" id=":2va.3">plugins</span>, it would also provide useful information from our continuous build process.</div><div><br></div><div>My hope is that there is some way to conditionally start a <span tabindex="-1" id=":2va.4">profiler</span> when the python interpreter is initialized within <span tabindex="-1" id=":2va.5">QGIS</span>.  This would help avoid placing profiling code in the <span tabindex="-1" id=":2va.6">plugin</span> source.</div><div><br></div><div>The interpreter appears to be initialized here...</div><div><br></div><div><strong><span tabindex="-1" id=":2va.7">qgspythonutilsimpl</span>.<span tabindex="-1" id=":2va.8">cpp</span></strong></div><div><span>    void</span> <span><span tabindex="-1" id=":2va.9">QgsPythonUtilsImpl</span>::<span tabindex="-1" id=":2va.10">init</span></span>()</div><div><br></div><div>Is it possible to conditionally invoke the embedded profiling functions during initialization in</div><div><span><span tabindex="-1" id=":2va.11">QgsPythonUtilsImpl</span>::<span tabindex="-1" id=":2va.12">init</span></span>?</div><div>    <span tabindex="-1" id=":2va.13">PyEval</span>_<span tabindex="-1" id=":2va.14">SetProfile</span>(<span tabindex="-1" id=":2va.15">Py</span>_<span tabindex="-1" id=":2va.16">tracefunc</span> <span tabindex="-1" id=":2va.17">func</span>, <span tabindex="-1" id=":2va.18">PyObject</span> *obj)<br>    <span tabindex="-1" id=":2va.19">PyEval</span>_<span tabindex="-1" id=":2va.20">SetTrace</span>(<span tabindex="-1" id=":2va.21">Py</span>_<span tabindex="-1" id=":2va.22">tracefunc</span> <span tabindex="-1" id=":2va.23">func</span>, <span tabindex="-1" id=":2va.24">PyObject</span> *obj)<br>    <span tabindex="-1" id=":2va.25">PyObject</span>* <span tabindex="-1" id=":2va.26">PyEval</span>_<span tabindex="-1" id=":2va.27">GetCallStats</span>(<span tabindex="-1" id=":2va.28">PyObject</span> *self)<br></div><div><br></div><div><br></div><div>Or maybe there is there a way to utilize <span tabindex="-1" id=":2va.29">startup</span>.<span tabindex="-1" id=":2va.30">py</span> to provide profiling?</div><div><br></div><div>Ideally I would like to call a <span tabindex="-1" id=":2va.31">QGIS</span> method to provide the results in a python console or when executing a test script.<br></div><div><br></div><div>Any guidance is appreciated.</div><div><br></div><div>Thanks,</div><div>Robb</div><div><br></div><div><br></div><div><br></div>
</div>